首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在in子句中使用mysql_real_escape_string

问在in子句中使用mysql_real_escape_string
EN

Stack Overflow用户
提问于 2011-12-23 17:37:11
回答 2查看 638关注 0票数 1

mysql_real_escape_string向in子句中的值添加斜杠,因此不返回值。如何发送在in子句中使用mysql_real_escape_string()进行转义的数组值?

下面是我的代码:

代码语言:javascript
复制
$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更改后的查询如下所示:

代码语言:javascript
复制
SELECT * FROM user WHERE user_name IN (\'dave\', \'smith\')

我不想在in子句里有这些斜杠。另外,我不希望在in子句中直接替换这些值。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-23 17:46:00

这可能会起作用。

代码语言:javascript
复制
$names = "'". implode("', '", array_map('mysql_real_escape_string', $names_array)). "'";
票数 4
EN

Stack Overflow用户

发布于 2011-12-23 17:44:34

不要使用mysql_real_escape_string;不要直接使用mysql_*函数;使用ADODB或诸如此类的东西;不要以这种方式连接查询,请使用占位符(?)和准备好的语句。您的代码应如下所示:

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8614357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档