0

私は初心者のウェブ開発者です。これは、MySQL データベースに接続する最初の試みです。次の構文エラーが発生します (db に正常に接続した後?)。似たような質問があることは知っていますが、特定の何かが欠けているに違いないと思います。お待ち頂きまして、ありがとうございます!

エラー: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'Name, Email, Password, Gender) VALUES ('','','', '')' 付近で使用する正しい構文を確認してください。

<?php
$con=mysqli_connect("localhost", "shiftedr_admin", "", "shiftedr_whosthedeeusers");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
$sql="INSERT INTO Users2 (Full Name, Email, Password, Gender)
VALUES
('$_POST[fullname]','$_POST[email]','$_POST[password]', '$_POST[gender]')";

if (!mysqli_query($con,$sql))   
  {
  die('Error: ' . mysqli_error($con));
 }
 echo "1 record added";

mysqli_close($con);
 ?>

値がDB内の値と正確に一致し、大文字と小文字が区別されることを再確認しました。「Full Name」は、Users2 テーブルと呼び出し元の php の両方にある方法です。

スクリプトを送信するために使用している HTML コードは次のとおりです。

<div class="reformed-form" style="width: 400px; border-right-color:">
<form method="post" name="accountcreation" id="accountcreation" action="insertnewaccounts.php" style="background-color:#CCFFFF;">
<center><h1 style="position:relative;left:0px;"> Account Creation </h1>

    <table>
    <tr>
    <td align="right"> Full Name: </td>
    <td align="left"><input type="text" id="fullname nameerror"  name="fullname" min="4" class="spacing" placeholder="Your Full Name"/> </td></tr>
    <tr>
    <td align="right">Email</td>
    <td align="left"><input type="text" id="email" name="email"  min="5" placeholder="@" />        </td></tr>
    <tr>
    <td align="right"> Password </td>
    <td align="left"><input type="text" id="Password" name="password"  class="spacing" placeholder="Minimum 6 Characters"/>         </td></tr>
    <tr>
    <td align="right"> Confirm Password </td>
    <td align="left"><input type="text" id="confirmpassword passworderror" class="spacing" name="pwc" placeholder="Confirm Password"/></td></tr>
    <tr>
    <td align="right"> Owner's' Gender: </td>
    <td align="left"><input type="radio"> Male <input type="radio">Female </td></tr>
    </table>
    </center>
    </dl>
<input type="submit" value="Check" /></center>
</form>
4

1 に答える 1

3

Full Nameにはスペースが含まれているため、構文が無効です。実際の列名が「Full Name」の場合、(痛い) バッククォートが必要です。

INSERT INTO Users2 (`Full Name`,

あなたのコードはインジェクションに対して脆弱であり、非推奨の MySQL API を使用しています。PDO または mysqli で適切にパラメーター化されたクエリを使用するように切り替えます。

于 2013-09-04T17:27:08.523 に答える