Php mysql\u real\u escape\u字符串和json

Php mysql\u real\u escape\u字符串和json,php,mysql,json,Php,Mysql,Json,我在关联数组中有以下json字符串: [watch] => '{"tv":"Dexter's Labratory, \u05d1\u05d9\u05d3\u05d5\u05e8 \u05d9\u05e9\u05e8\u05d0\u05dc\u05d9 HOT, South Park, \u05e2\u05e1\u05e4\u05d5\u05e8, Teenage Mutant Ninja Turtles, Simpsons, The Samurai Pizza Cats, Dr. Hou

我在关联数组中有以下json字符串:

[watch] => '{"tv":"Dexter's Labratory, \u05d1\u05d9\u05d3\u05d5\u05e8  \u05d9\u05e9\u05e8\u05d0\u05dc\u05d9 HOT, South Park, \u05e2\u05e1\u05e4\u05d5\u05e8, Teenage Mutant Ninja Turtles, Simpsons, The Samurai Pizza Cats, Dr. House, Futurama, House","movies":"Mufasa, Simba, \u05d7\u05d9\u05d9\u05dd \u05d1\u05e1\u05e8\u05d8, \u05e1\u05e8\u05d8\u05d9\u05dd \u05d7\u05d3\u05e9\u05d9\u05dd \u05d1\u05e7\u05d5\u05dc\u05e0\u05d5\u05e2, Future Shorts Israel, The Lion King"}'
当然,它需要转义,因为它包含像“inside”这样的字符(例如Dexter的Labratory)。问题是在其上使用mysql\u real\u escape\u字符串后,输出为:

[watch] => \'{\"tv\":\"Dexter\'s Labratory, \\u05d1\\u05d9\\u05d3\\u05d5\\u05e8  \\u05d9\\u05e9\\u05e8\\u05d0\\u05dc\\u05d9 HOT, South Park, \\u05e2\\u05e1\\u05e4\\u05d5\\u05e8, Teenage Mutant Ninja Turtles, Simpsons, The Samurai Pizza Cats, Dr. House, Futurama, House\",\"movies\":\"Mufasa, Simba, \\u05d7\\u05d9\\u05d9\\u05dd \\u05d1\\u
它漏掉了一大堆不应该漏掉的东西,尤其是所有的“字符”(我很确定这些字符是json编码的一部分),使得它无法进行查询。
对json字符串进行转义的正确方法是什么?我想我在这里遗漏了一些东西。

对要放入MySQL SQL查询的任何字符串进行转义的正确方法是使用绑定参数。使用
mysqli\u real\u escape\u string
跟踪后面和
MySQL\u real\u escape\u string
跟踪后面

转义可以具有特殊含义但不在上下文中的字符不会导致问题


如果您希望合理地查询数据,则不应将其以JSON格式存储在数据库中。如果不从数据库中提取数据并对其进行解析,则无法访问JSON中的字段。

您不应使用
已准备好的
JSON字符串

您应该使用
json_encode();
函数从数组或对象创建json字符串


它会自动转义特殊字符。或者您可以简单地在该函数的第三个参数中定义要转义的内容。是PHP文档。

这可能是因为您有希伯来文字符。它需要解析。 见这个问题: