0

Test という非常に基本的なデータベースに名、姓、および年齢を追加する非常に基本的なフォームを作成しようとしています。ここに私のHTMLコードがあります:

<html>

<head>
</head>

<body>

<h1>Welcome!</h1>
<br>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Age: <input type="text" name="age">
<input type="submit">
</form>

<input type="submit">
</form>

</body>

</body>

</html>

そして、これは私の PHP コードで、DB 名、ホスト、およびログイン情報が非表示になっています。

<?php
$con=mysqli_connect("HOST","USER","PASS","DB");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql=   "INSERT INTO Test ('First Name', 'Last Name', 'Age')
        VALUES
        ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

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

mysqli_close($con);
?>

これは、フォームにデータを入力して送信するときの私のエラーです。このページに誘導されます:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''First Name', 'Last Name', 'Age') VALUES ('Robert','Maxwell','18')' at line 1
4

2 に答える 2

3

変化する

$sql=   "INSERT INTO Test ('First Name', 'Last Name', 'Age')

為に

$sql=   "INSERT INTO Test (`First Name`, `Last Name`, `Age`)

;-)

于 2013-05-01T04:00:51.677 に答える
1

クエリが正しくありません。列テーブルにスペースはありません。キャメル ケース (FirstName) またはアンダースコア (first_name) でなければなりません。

    $sql=   "INSERT INTO Test (`First_Name`, `Last_Name`, `Age`)
    VALUES
    ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

また

    $sql=   "INSERT INTO Test (`FirstName`, `LastName`, `Age`)
    VALUES
    ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

注意: 本番環境では使用しないでください。クエリは公開されています。SQL インジェクションからクエリを保護することを検討してください。

于 2013-05-01T04:32:16.550 に答える