繁体   English   中英

如何在MySQL中多次使用空变量?

[英]How do I use the empty variable in MySQL more than once?

我试图在MySQL语句中检查2个空变量,但我似乎可以得到它的语法。 这是我现在拥有的,它一直给我一个错误。 谁能告诉我如何正确地做到这一点?

  SELECT threads, userid, username, usergroupid
    FROM " . TABLE_PREFIX . "user
   WHERE  
    " . iif(!empty($exuserids), "AND userid NOT IN ($exuserids)") . "
    " . iif(!empty($exgroups), "AND usergroupid NOT IN ($exgroups)") . "
ORDER BY threads DESC 
   LIMIT 1

使用:

  SELECT threads, userid, username, usergroupid
    FROM " . TABLE_PREFIX . "user
   WHERE 1 = 1 
    " . iif(!empty($exuserids), "AND userid NOT IN ($exuserids)") . "
    " . iif(!empty($exgroups), "AND usergroupid NOT IN ($exgroups)") . "
ORDER BY threads DESC 
   LIMIT 1

在指定“AND ...”之前需要有一个WHERE子句 - 1 = 1将被优化掉。 这是一个用于动态SQL的技巧,使WHERE子句连接更容易。

难怪它会给你一个错误。 您是否正在使用PHPkit或其它能为您提供iif因为,尽管您没有这样说,但上面是用PHP编写的,而iif不是该语言的一部分。

现在,即使你有它为什么不巧妙地编译语句 - 收集数组中的条件,用AND内爆,并添加一个WHERE条件,如果它不是空的。

最后,在查询中使用变量是SQL注入攻击的一个方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM