使用PHP连接到MySQL会产生SQL语法错误

时间:2010-11-17 12:56:57

标签: php sql mysql

我是PHP和SQL的新手,所以我正在玩这个桌面的东西,但它不会起作用。这个脚本有什么问题?我收到这个错误:

"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 '')' at line 3"

PHP脚本:

<?php
$mysql_host = "localhost";
$mysql_database = "database";
$mysql_user = "username";
$mysql_password = "password";
$con = mysql_connect($mysql_host,$mysql_user,$mysql_password);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db($mysql_database, $con);

$sql="INSERT INTO Persons (name, age)
VALUES
('$_POST[name]','$_POST[age])";

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

mysql_close($con)
?>

6 个答案:

答案 0 :(得分:4)

添加撇号

$sql="INSERT INTO Persons (name, age)
VALUES
('$_POST[name]','$_POST[age]')"

答案 1 :(得分:1)

正如其他人所指出的那样,你错过了在右括号之前的单引号。

此外,您不应该以这种方式使用POST值:

$sql="INSERT INTO Persons (name, age)
VALUES
('$_POST[name]','$_POST[age]')";

使用此:

$name = mysql_real_escape_string($_POST[name]);
$age = mysql_real_escape_string($_POST[age]);

$sql="INSERT INTO Persons (name, age) VALUES ('$name','$age')";

这是为了防止SQL注入攻击。

编辑:看看这个:https://stackoverflow.com/a/60496/379892。您将找到有关防止SQL注入攻击的更多详细信息。

答案 2 :(得分:0)

你错过了一个关闭的撇号:

('$_POST[name]','$_POST[age]')";

答案 3 :(得分:0)

$sql="INSERT INTO Persons (name, age)
VALUES
('$_POST[name]','$_POST[age])";

应该是

$sql="INSERT INTO Persons (name, age)
VALUES
('$_POST[name]','$_POST[age]')";

答案 4 :(得分:0)

添加此部分,看看你得到了什么结果:

$db_selected = mysql_select_db($mysql_database, $con);
if (!$db_selected) {
  die ('Can\'t use foo : ' . mysql_error());
}

答案 5 :(得分:0)

另外,不应该这样吗?

$sql="INSERT INTO Persons (name, age) VALUES ('{$_POST['name']}','{$_POST['age']}')";