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子句中直接替换值。 在此先感谢。
答案 0 :(得分:4)
这可能会这样做。
$names = "'". implode("', '", array_map('mysql_real_escape_string', $names_array)). "'";
答案 1 :(得分:0)
不要使用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();
}