簡體   English   中英

無法在PHP中向MySQL查詢添加條件

[英]Trouble adding conditions to MySQL query in PHP

我是PHP和MySQL的新手,在編寫要查詢的內容時遇到了問題:

$query = "SELECT SUM(op.total) as amount_sum
 , SUM(r.recurring_price) as recurring_price
 , op.subscription 
 FROM " . DB_PREFIX . "order o 
 LEFT JOIN " . DB_PREFIX . "order_product op 
   ON(op.order_id=o.order_id)
 LEFT JOIN " . DB_PREFIX . "order_recurring r 
   ON(r.order_id=o.order_id)
 WHERE order_status_id IN(" . implode(",", $implode) . ") 
   AND o.date_added >= (CURDATE() - INTERVAL 12 MONTH)";

我想將此條件添加到查詢中

AND op.subscription ='1'

我只希望在op.subscription等於1的情況下將其添加到查詢中。我使用它進行過濾,因此無法將其添加到主查詢中,但是我不知道如何添加。 我認為是if語句,但是我必須將op.subscription設置為變量嗎? 我知道我想做的事,但我不知道如何在代碼中正確編寫它

我想將此條件添加到查詢中

將其連接到您已經擁有的查詢的末尾將得到您想要的結果。

值得注意的是

  • 在WHERE子句中添加此謂詞后,會將第一個LEFT JOIN轉換為過於昂貴的INNER JOIN。 使用顯式的INNER JOIN將更有效。

  • 您已引用一個整數值。 如果表中的基礎數據類型是數字,那么這也是無效的。 盡管優化器應該能夠以很少的開銷處理這種情況,但是如果您盲目地忽略數據類型,則會遇到問題。 OTOH如果屬性的數據類型是varchar,則表明您使用了錯誤的數據類型。

  • 如果要對表或屬性名稱使用SQL保留字(如order ),則最好將它們括在反引號中,以便SQL解析器知道它們是名稱而不是指令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM