How to store JSON string in MySQL db

后端 未结 4 2034
温柔的废话
温柔的废话 2020-12-28 09:29

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.



        
相关标签:
4条回答
  • 2020-12-28 09:33

    You need to escape the quotes in your JSON string - otherwise they terminate the SQL-Query resulting in the exception you got.

    0 讨论(0)
  • 2020-12-28 09:35

    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);
    
    0 讨论(0)
  • 2020-12-28 09:39

    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);
    

    EDIT

    Please use PDO ( http://www.php.net/manual/en/book.pdo.php ). The mysql extension has been deprecated as of 5.5

    0 讨论(0)
  • 2020-12-28 09:46

    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);
    
    0 讨论(0)
提交回复
热议问题