我處於一個我看不到在for
循環內避免SELECT
查詢的可能性的位置,因此我在這裏問。迴避特定情況下的查詢
情況是這樣的:我正在創建一個電子商務系統,它實現了貝寶購物車系統。一個用戶支付後,IPN響應看起來是這樣的(縮短):
Array
(
[mc_gross] => 8.98
[address_status] => confirmed
[item_number1] => item_49
[tax] => 0.00
[item_number2] => item_16
[num_cart_items] => 2
[address_state] => CA
[item_name1] => Tractor
[item_name2] => Elegy
[quantity1] => 1
[quantity2] => 1
[txn_type] => cart
[mc_gross_1] => 5.99
[mc_currency] => USD
[mc_gross_2] => 2.99
[residence_country] => US
[test_ipn] => 1
[payment_gross] => 8.98
)
正如你看到的,有一些關鍵說法somethingN
。這是麻煩開始的地方。
我用的是num_cart_items
作爲迭代次數我必須做的,如:
for ($i = 1; $i <= $_POST['cart_num_items']; $i++)
{
// Do something
}
很明顯嘛,現在這個循環中,我能夠訪問在具有N
每車項目結束了。我需要的是驗證銷售的產品是否存在欺詐行爲。
我必須從我的數據庫選擇項目的數量從item_numberN
價格並將其與它是從PayPal的反應得到的價格。
這個select語句必須發生在這個循環內部,據我所知。
有沒有辦法避免這種情況?
我不擅長PHP,但是不能僅僅在SELECT中執行查詢SELECT item_price FROM WHERE id = item_number1 OR id = item_number2 .... OR id = item_numberX,等等?這至少會給你一個SQL查詢,而不是一個巨大的for循環。 –
如果有人購買了120件物品會怎麼樣? – Aborted
沒有理由不適合120個項目。它比更有效: 1)打開連接到DB 2)發送很小查詢 3)等待響應 4)接收的數據爲小型查詢 5)關閉連接 X120倍 –