使用PHP插入SQL表时出错

时间:2010-08-05 19:32:45

标签: php mysql sql database

这是我的代码:

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 ....

任何人都知道为什么会这样吗?

2 个答案:

答案 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) . "')";