$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表?
答案 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注入的危险。