Я храню данные JSON в таблице MySQL, используя следующий код. Он отлично работает, если JSON короткий, но ломается для более длинного текста. «Field_json» – это LONGTEXT.
$sql = sprintf("UPDATE mytable SET field_json = '$json_string' WHERE id = $userid"); $result = mysql_query($sql);
Ошибка, которую я получаю:
Неверный запрос: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «G», «username»: «C0WB0Y», «lastName»: «", "id": 31874363}, {"pathToPhoto": " 22960 / фото 'в строке 2
Используйте держатели мест, иначе вы восприимчивы к 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);
Используйте PDO ( http://www.php.net/manual/en/book.pdo.php ). Расширение mysql
устарело от 5.5
Вам нужно избегать кавычек в вашей строке JSON, иначе они завершат SQL-Query, в результате чего вы получите исключение.
Побег строки JSON:
$json_string = mysql_real_escape_string( $json_string); $sql = sprintf("UPDATE mytable SET field_json = '$json_string' WHERE id = $userid"); $result = mysql_query($sql);
попробуй это
$json_string = mysql_real_escape_string( $json_string ); $sql = sprintf("UPDATE mytable SET field_json = '$json_string' WHERE id = $userid"); $result = mysql_query($sql);