簡體   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