2011-07-25 131 views
0

我正在使用mysql。在一個項目中有一個用戶編輯的字段。如果名稱包含's'這樣的字符,那麼在保存記錄時,它會自動在撇號前插入'\'字符,並且名稱將變爲xyz \。下次agin在保存的時候插入另一個這樣的字符,並且名字變成xyz。 有沒有解決方法? 謝謝。撇號問題

回答

4

您最有可能有magic_quotes指令開啓(不應該)。它會在引號前自動添加反斜槓,所以如果您使用的是mysql_real_escape_string,它將被添加兩次。如果你沒有使用mysql_real_escape_string,那麼只需shame on you!

function escape($field) 
{ 
if(magic_quotes_gpc()) 
{ 
    $field = mysql_real_escape_string(stripslashes($field)); 
} 
else 
{ 
    $field = mysql_real_escape_string($field); 
} 
} 

然後,只需做(一定有通話功能,或mysql_real_escape_string(之前打開的連接)返回FALSE)

$name = escape($_POST['name']); 

或者簡單地從你的PHP INI將其關閉:

ini_set('magic_quotes_gpc',0); 

更好的是,使用prepared statements並停止擔心轉義和SQL注入!