mysql_real_escape_string向in子句中的值添加斜杠,因此不返回值。如何发送在in子句中使用mysql_real_escape_string()进行转义的数组值?
下面是我的代码:
$names_array = array('dave','smith');
$names = mysql_real_escape_string("'". implode("', '", $names_array) ."'");
$sql = "SELECT * FROM user WHERE user_name IN ($names)";
$results = mysql_query($sql);mysql_real_escape_string更改后的查询如下所示:
SELECT * FROM user WHERE user_name IN (\'dave\', \'smith\')我不想在in子句里有这些斜杠。另外,我不希望在in子句中直接替换这些值。提前谢谢。
发布于 2011-12-23 17:46:00
这可能会起作用。
$names = "'". implode("', '", array_map('mysql_real_escape_string', $names_array)). "'";发布于 2011-12-23 17:44:34
不要使用mysql_real_escape_string;不要直接使用mysql_*函数;使用ADODB或诸如此类的东西;不要以这种方式连接查询,请使用占位符(?)和准备好的语句。您的代码应如下所示:
include('/path/to/adodb.inc.php');
$DB = NewADOConnection('mysql');
$DB->Connect($server, $user, $pwd, $db);
# M'soft style data retrieval with binds
$rs = $DB->Execute("select * from user where user_names in ?",array(array('dave','smith')));
while (!$rs->EOF) {
print_r($rs->fields);
$rs->MoveNext();
}https://stackoverflow.com/questions/8614357
复制相似问题