首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NOT in mysql中使用字符串

在NOT in mysql中使用字符串
EN

Stack Overflow用户
提问于 2012-05-07 07:26:54
回答 2查看 59关注 0票数 0

我有这个

代码语言:javascript
复制
$sql=mysql_query("SELECT EMAIL FROM USERNAME WHERE EMAIL <> '".$_REQUEST['EMAIL']."' AND EMAIL NOT IN (".$str.")") or die("Error: ". mysql_error(). " with query ". $sql);

例如,$str包含值'd','f‘,并且在我的表的电子邮件列中有一个d和f。

当我运行查询时,我得到了这样的错误:错误:未知的列'd‘在'where子句’with查询“

我完全是mysql的新手,所以我希望我在这里遗漏了一些非常基本的东西。任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-07 07:30:11

很不错的SQL injection洞。享受您的服务器的pwn3d。

IN语法的工作方式为

代码语言:javascript
复制
WHERE field IN (value1, value2, value3, ...)

代码语言:javascript
复制
WHERE value IN (field1, field2, field3, ...)

假设你得到的是“没有这样的d”,你可能忘了引用这些值,生成

代码语言:javascript
复制
WHERE field IN (d, f)

它被称为“域d”和“域f",其中它应该是:

代码语言:javascript
复制
WHERE field IN ('d', 'f')

注意引号-它们将这些d和f转换为字符串,而不是字段名称。

票数 2
EN

Stack Overflow用户

发布于 2012-05-07 07:34:12

NOT IN部分后面缺少单引号。它应该是:

代码语言:javascript
复制
$sql = mysql_query("
        SELECT EMAIL FROM USERNAME WHERE EMAIL <> '".$_REQUEST['EMAIL']
        ."' AND EMAIL NOT IN ('".$str."')"
    ) or die("Error: ". mysql_error(). " with query ". $sql);

此外,正如马克指出的那样,对于要放在查询中的客户端变量,最好使用mysql_real_escape_string()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10475156

复制
相关文章

相似问题

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