I\'m storing JSON data in a MySQL table using the code below. It works fine if the JSON is short but breaks for longer text. The \"field_json\" is a LONGTEXT.
You need to escape the quotes in your JSON string - otherwise they terminate the SQL-Query resulting in the exception you got.
try this
$json_string = mysql_real_escape_string( $json_string );
$sql = sprintf("UPDATE mytable
SET field_json = '$json_string'
WHERE id = $userid");
$result = mysql_query($sql);
Use place holders otherwise you are susceptible to SQL injection: http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
Otherwise, here's a quick fix: 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);
Please use PDO ( http://www.php.net/manual/en/book.pdo.php ). The mysql
extension has been deprecated as of 5.5
Escape the JSON string:
$json_string = mysql_real_escape_string( $json_string);
$sql = sprintf("UPDATE mytable
SET field_json = '$json_string'
WHERE id = $userid");
$result = mysql_query($sql);