2011-02-12 157 views
2

這是簡單的一個我用下列插入查詢與PHP的MySQL插入查詢問題

mysql_query(insert into table1 set saltval = 'Y'Z' where uid ='1'); 

,但我不becaues爲字段saltval值工作Y'Z。我的問題是如何考慮這個值是作爲一個字符串。

回答

5

您需要使用反斜槓轉義任何單引號。

mysql_query("insert into table1 set saltval = 'Y\'Z' where uid ='1'"); 

但是,您的SQL也是無效的......您是否想要更新?插入語句沒有where。

正如在其他的答案中提到,如果輸入的是用戶,那麼你應該使用mysql_real_escape_string()
http://www.php.net/manual/en/function.mysql-real-escape-string.php

2
$string = mysql_real_escape_string("Y'Z"); 
mysql_query("insert into table1 set saltval = '{$string}' where uid ='1'"); 
1

你有一個反斜槓添加到某些字符使您的字符串適合SQL語法規則。
假設您正在動態創建查詢,PHP對此具有特殊的轉義功能,您應該在查詢中將其用於每個帶引號的字符串,沒有例外。
所以,寫你這樣的代碼:

$salt = "Y'Z"; 
$id = 1; 

$salt = mysql_real_escape_string($salt); 
$id = mysql_real_escape_string($id); 

$sql = "update table1 set saltval = '$salt' where uid ='$id'"; 

mysql_query($sql) or trigger_error(mysql_error()." ".$sql); 

,使其安全和容錯