使用PHP将Backbone JSON对象保存到MySQL表

时间:2013-06-10 00:59:20

标签: php mysql json backbone.js decode

我正在保存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表的最佳方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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
));