php - 避免循环查询 - 特定情况

标签 php mysql sql loops paypal

我认为不可能避免 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/

相关文章:

php - CakePHP 提交表单以进行正确的操作

php - 用于比较两个逗号分隔值的 Mysql 查询

php - 了解 Controller 上的 MVC : Whats the concept of "Fat" on models, "Skinny"?

java - mysql cpanel netbeans 远程连接

mysql - 仅显示百分比后的 2 个数字

mysql - 如何使用 MySQL 配置 Spring Cloud Zipkin Server 以实现持久化?

php - 将 Artisan 注入(inject) Service 类

php - 如何从数据库 MySQL 中的大量记录中删除特定字符?

c++ - C++应用多线程中的Lock方法

mysql - 如何子查询正确的结果