$array =array();
array_push($array,"string");
$string = json_encode($array);
mysql_query('UPDATE table SET strings="'.$string.'" WHERE username="'.$username.'"');该字符串未出现在mysql表中。当我定义一个像$string = " string“这样的字符串时,当我使用'INT‘数字per时,它可以工作。所以它在某种程度上与json_encode()函数有关。
有人能帮我一下吗。我的字符串在json_encode()中发生了什么,为什么这个字符串不适合mysql表?
发布于 2015-01-31 00:41:01
使用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注入的危险。
https://stackoverflow.com/questions/28240054
复制相似问题