这是我的代码:
function function() {
$isbn = $_REQUEST["isbn"];
$price = $_REQUEST["price"];
$cond = $_REQUEST["cond"];
$con = mysql_connect("localhost","my_usernam", "password");
if (!$con) die('Could not connect:' . mysql_error());
mysql_select_db("my_database",$con);
$sql="INSERT INTO 'Books' (isbn, price, condition)
VALUES ('$isbn','$price','$cond')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
return "It works";
但是当它运行时会导致:
错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在“书籍”附近使用正确的语法(isbn,price ....
任何人都知道为什么会这样吗?
答案 0 :(得分:3)
对于表和字段名称,您应该使用反引号而不是单引号:
$sql="INSERT INTO `Books` (`isbn`, `price`, `condition`)
VALUES ('$isbn','$price','$cond')";
会奏效。
PS。为了防止各种令人讨厌的安全漏洞,请使用以下命令来转义输入字段:
$isbn = mysql_real_escape_string($_REQUEST["isbn"]);
// etc etc for all fields
答案 1 :(得分:0)
用反引号括起表名,而不是引号,并确保为了安全而转义输入:
$sql="INSERT INTO `Books` (`isbn`, `price`, `condition`)
VALUES ('" . mysql_real_escape_string($isbn) . "',
'" . mysql_real_escape_string($price) . "',
'" . mysql_real_escape_string($cond) . "')";