我认为不可能避免 for
循环内的 SELECT
查询,因此我在这里提问。
情况是这样的:我正在创建一个电子商务系统,它实现了 Paypal 购物车系统。用户付款后,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 语句必须发生在这个循环内。
有办法避免这种情况吗?
最佳答案
为了避免 for 循环中的查询,您必须从 ipn 响应中收集所有 item_numbers
。然后,使用这些 item_numbers
生成带有 IN
语句的查询。例如:
SELECT * FROM `items` WHERE `item_number` IN ('item_49', 'item_16')
关于php - 避免循环查询 - 特定情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110241/