我是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)
?>
答案 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']}')";