如何在MySQL数据库中存储JSON字符串

uwe*_*uwe 12 php mysql json

我使用下面的代码将JSON数据存储在MySQL表中.如果JSON很短但是中断较长的文本,它可以正常工作."field_json"是LONGTEXT.

$sql = sprintf("UPDATE mytable 
    SET field_json = '$json_string'
    WHERE id = $userid");
$result = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

查询无效:SQL语法中存在错误; 查看与您的MySQL服务器版本对应的手册,以便在"G"附近使用正确的语法,"用户名":"C0WB0Y","lastName":"","id":31874363},{"pathToPhoto":" 22960/phot'在第2行

Mar*_*son 21

使用占位符,否则您容易受到SQL注入:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

否则,这是一个快速修复:http://php.net/manual/en/function.mysql-real-escape-string.php

$sql = sprintf(
        "UPDATE mytable SET field_json = '%s' WHERE id = '%s'",
        mysql_real_escape_string($json_string),
        mysql_real_escape_string($userid)
);
$result = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)

编辑

请使用PDO(http://www.php.net/manual/en/book.pdo.php).该mysql扩展程序自5.5起已被弃用