2011-09-02 58 views
1

可能重複:
apostrophes are breaking my mysql query in PHP用引號打破SQL查詢的姓氏,如何解決這個問題?

我問一個朋友來測試我的網站,他的姓了。「 O'Rourke,所以我在Rourke附近出現語法錯誤。顯然是由撇號造成的。

如何防止發生這種情況,以便他可以註冊我的網站?

$name = $user_profile[name]; 

mysql_select_db("gamedb", $con); 

$sql="INSERT IGNORE INTO Users (FID, Name, Date) VALUES ('$fid','$name',NOW())"; 

轉義是否解決了這個問題?由於名稱是從usr facebook帳戶中獲取的,我實際上無法嘗試轉義它。

感謝

+1

除了這是上述的重複之外,您真的要單擊該帖子有關SQL注入的答案中的鏈接。 –

+2

這不是第一次向你解釋這個嗎? http://stackoverflow.com/questions/6880490/how-do-i-retrieve-escaped-strings-from-db – mario

回答

1

使用mysql_real_escape_string()的變量

$sql = "INSERT IGNORE INTO Users (
      FID, 
      Name, 
      Date 
     ) VALUES (
      '" . mysql_real_escape_string($fid) . "', 
      '" . mysql_real_escape_string($name) . "', 
      NOW() 
     )"; 
0

逃生用字符串:

$name = mysql_escape_string($user_profile[name]); 

這防止sql injection

0

您插入行之前,你應該使用mysql_real_escape_string($sql)