2014-02-15 170 views
0

我创建了一个表单来收集用户数据,包括地址并将它们写入Mysql数据库。 在用户表中,StreetVarchar (255)。 一切正常,除非名街有一个撇号,在这种情况下,我有 以下SQL警告:撇号生成SQL错误

例如,如果在Street名字,我把“弗朗切斯科·阿西斯24”

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'assisi 24'

任何想法如何避免它?

+3

它'称为SQL注入使用制备statements.http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Mihai

回答

0

需要转义数据:使用函数mysql_real_escape_string(或其他库中的模拟)或使用PDO和参数。

例如:

$data = <<<TXT 
Francesco D'assisi 24 
TXT; 

$data = mysql_real_escape_string($data); 
mysql_query("INSET INTO table VALUES ('$data')") or die mysql_error();