2011-02-12 133 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); 

,使其安全和容错