我正在保存 Backbone 模型数据,它将 JSON 对象 POST 到我的 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 表的最佳方式吗?
谢谢!
最佳答案
JSON只是数据的表示形式:解码后,$values["name"]
包含一个包含您的值的字符串,John Doe。这意味着您的请求将扩展为
$sql="INSERT INTO `users` (name) VALUES John Doe";
这既是无效语法,又非常不安全。
使用PDO class只要有可能,就像这样:
$sql = "INSERT INTO users (name) VALUES(?)";
$sth = $dbh->prepare($sql);
$sth->execute(array(
$name
));
关于php - 使用 PHP 将 Backbone JSON 对象保存到 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17015663/