0

我正在保存 Backbone 模型数据,它将一个 JSON 对象发布到我的 save.php 文件中。由于模型数据将用于我的应用程序的用户,我想将唯一值存储在 MySQL 表中。

目前,我正在使用这种方法:

$values = json_decode(file_get_contents('php://input'), true);
$name = $values["name"];

$sql="INSERT INTO `users` (name) VALUES $name";

它给了我这个错误

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 'John Doe' at line 1

如果我在查询中传递一个简单的字符串,它会按照我想要的方式工作:

$sql="INSERT INTO `users` (name) VALUES ('John Doe')";

我的问题是:

  • 为什么 $name 不是字符串?
  • 这是将 JSON 对象插入 MySQL 表的最佳方式吗?

谢谢!

4

1 回答 1

1

JSON只是您的数据的一种表示形式:解码后$values["name"]包含一个带有您的值的字符串,John Doe。这意味着,按原样,您的请求扩展到

$sql="INSERT INTO `users` (name) VALUES John Doe";

这既是无效的语法又非常不安全。

尽可能使用PDO 类,如下所示:

$sql = "INSERT INTO users (name) VALUES(?)";
$sth = $dbh->prepare($sql);
$sth->execute(array(
    $name
));
于 2013-06-10T07:38:16.697 回答