将 MySQL 数据转义为 JSON 的最佳方法是什么?
我需要从 MySQL 输出 JavaScript 数据(数组的数组)
我正在使用这段代码,除了 REPLACE 函数之外,它工作正常
我需要修改进入 JS 数组的倒逗号“--”的所有文本按照 JS 格式。并且可以一次性用于所有字段。
我需要一个替换函数来转义所有数据,即 \ -> \\; <代码>'-> \'
; 换行符 -> \n
$sth=$dbh->prepare('
SELECT GROUP_CONCAT(
"\n[\'",
CONCAT_WS("\',\'", d6id, REPLACE(d6name,"\'","\\\\\'"), d6date),
"\']"
)
FROM d6lastdate
');
$sth->execute();($json)=$sth->fetchrow_array();
输出
['0000000001','CA\'T','2011-09-26'],
['0000000002','CWE','2011-09-23'],
['0000000003','MAT','0000-00-00'],
I need to output data for javascript (array of array) from MySQL
I am using this code, which works fine except that REPLACE function
I need to modify all the text that goes into JS array's inverted comas ' -- ' as per JS format. And can be used for all the fields in 1 go.
I need a replace function that will escape all data, i.e. \ -> \\
; ' -> \'
; newline -> \n
$sth=$dbh->prepare('
SELECT GROUP_CONCAT(
"\n[\'",
CONCAT_WS("\',\'", d6id, REPLACE(d6name,"\'","\\\\\'"), d6date),
"\']"
)
FROM d6lastdate
');
$sth->execute();($json)=$sth->fetchrow_array();
Output
['0000000001','CA\'T','2011-09-26'],
['0000000002','CWE','2011-09-23'],
['0000000003','MAT','0000-00-00'],
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
最好的方法可能是在 MySQL 之外执行此操作。
encode_json
由 JSON::XS 提供。The best way is probably to do this outside of MySQL.
encode_json
is provided by JSON::XS.encode_json
由 JSON::XS 提供,其中其他的。encode_json
is provided by JSON::XS, among others.使用 PHP 并不总是一种选择(如果您希望存储过程在表中插入一行,其中一个或多个字段是 json 格式的字符串,该怎么办?)。
您最初的方法几乎很好...如果您除了结果不是有效的 JSON:
Eric
编辑:您还需要转义回车符、制表符和一些其他字符。看看这个页面上的字符串定义:http://www.json.org 。
您可以使用 http://jsonlint.com 验证生成的 json 字符串。
Using PHP is not always an option (what if you want a stored procedure to insert a row in a table, where one or more fields are json formatted strings?).
Your initial approach is almost good... if you except that the result is not valid JSON:
Eric
Edit: You also need to escape carriage returns, tabs and a few other characters. Have a look at string definition on this page: http://www.json.org .
You may validate your resulting json string with http://jsonlint.com .