如何将json_encode()生成的字符串放入mysql表?

时间:2015-01-30 16:13:34

标签: php mysql

$array =array();
array_push($array,"string");
$string = json_encode($array);

mysql_query('UPDATE table SET strings="'.$string.'" WHERE username="'.$username.'"');

该字符串未出现在mysql表中。当我使用' INT'我定义一个字符串时的数字,如$ string =" string"有用。所以它与json_encode()函数有关。

有人可以帮我这个吗?我的字符串里面发生了什么json_encode(),为什么字符串不适合mysql表?

1 个答案:

答案 0 :(得分:1)

使用mysqli或PDO(显示mysqli,因为它最有可能更容易为现有应用实现)

有可能,json编码添加了破坏SQL语法的字符。您需要转义您插入的字符串:

mysqli_query("UPDATE table SET 
    strings='".mysqli::real_escape_string($string)."' 
    WHERE username='".mysqli::real_escape_string($username)."'");

您必须始终转义字符串,或转换为(int)(float)等,以避免语法问题和SQL注入。或使用准备好的陈述。 mysqli和PDO都支持预备语句。

对于开始SQL应用程序开发,我通常建议使用字符串构建,就像你在这里一样,因为人们更容易理解。但是,一旦你掌握了经验,并且对SQL有很好的处理,我建议你继续阅读准备好的陈述。

有很多文章都详细介绍了如何使用预处理语句,以及SQL注入的危险。