2014-02-15 150 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();