2014-07-02 192 views
1

将json字符串存储在mysql表中存在小问题。 字符串例如:如何在mysql表中存储json字符串

'{"variable":"content here with \" addsleshes "}' 

用json_encode创建。 使用简单的mysqli_query函数将此字符串存储在数据库中。

mysqli_query('insert into ... values \'{"variable":"content here with \" addsleshes "}\' '); 

在此之后:

mysqli_query('select *..'); 
mysqli_fetch_array($res); 

当我从MySQL得到这个领域,并尝试之前,“不能使用和addslashes功能使用PHP的json_decode它会返回NULL,因为我不再有斜线。它还会添加斜线如\“变量\” 不知道如何解决这个问题

+0

你将不得不展示你如何存储这个字符串,以及如何检索它。正确完成的系统不会剥离文本中的斜杠。 –

+0

更新了问题。即时通讯使用现在进行测试只是mysqli_query funciton的情况下,我的数据库类正在改变的东西,但仍然是同样的问题 – abiku

+0

好吧,是的,你没有正确逃脱该字符串。如果你有,json_encode添加的反斜杠将会进入数据库。换句话说,你正在遭受[sql注入攻击](http://bobby-tables.com)漏洞,而这个字符串“腐败”是它的一个症状。 –

回答

3

你为什么不尝试颠倒它。

使用mysqli_escape_string实际上传递JSONmysqli_query

$json = '["Json","Just a Sample Data","Data 2"]' 
mysqli_query('insert into ... values'.mysqli_escape_string($json)); 

现在,当您从数据库

mysqli_query('select *..'); 
mysqli_fetch_array($res); 

使用stripslashes($str)检索数据从JSON删除斜线之前。

它的工作方式与您正在寻找的方式相同。

0

尝试:?

'{"variable":"content here with \\" addsleshes "}' 
+0

是的,正在考虑这个,但即时通讯使用json_encode从PHP数组中创建一个json字符串。所以我必须在使用json_enocde之前对每个数组单元格执行addslashes? – abiku

+0

没有。 json_encode()会为你做所有的转义。你需要弄清楚从文本中删除斜杠的地方。 –

相关问题