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 代码,隐藏了数据库名称、主机和登录信息:

<?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 回答