2014-12-18 3 views
1

У меня есть сценарий, в котором я получаю идентификаторы корзины покупок, а затем уменьшаю количество доступности на основе того, был ли продукт оплачен. Каждая корзина может содержать 1 или 10 продуктов, поэтому это должно произойти для каждого из предметов. Когда кто-то платит (подтверждено с помощью PayPal IPN), я бегу:while/foreach количество обновлений цикла в mySQL

// we set the cart id, 12345 in this case 
$cart_id = '12345' 

// we get the buyer ID 
$buyer_id = $db->get_sql_field("SELECT buyer_id FROM db_carts WHERE sc_id='" . $cart_id . "'", "buyer_id"); 

// we get the products. 
$sql_select_cart = $db->query("SELECT item_id, quantity FROM db_shopping_carts_items WHERE sc_id='" . $cart_id . "'"); 

while ($cart_details = $db->fetch_array($sql_select_cart)) 
     { 

      // 
      foreach ($cart_details as $key => $item_details) 
      { 
       if ($item_details['quantity']<='100') 
       { 
        $db->query("UPDATE db_products SET quantity=quantity-" . $item_details['quantity'] . 
        " WHERE product_id='" . $item_details['item_id'] . "'"); 
       } 
      } 
      // 

     } 

Однако ничто не кажется, случается, и ни я получаю сообщение об ошибке. Что я здесь делаю неправильно?

ответ

2

Это выглядит не так со мной:

// we get the products. 
$sql_select_cart = $db->query("SELECT item_id, quantity FROM db_shopping_carts_items WHERE sc_id='" . $cart_id . "'"); 

while ($cart_details = $db->fetch_array($sql_select_cart)) 

Предполагая MySQLi, вам нужно будет что-то вроде:

// we get the products. 
$sql_select_cart = $db->query("SELECT item_id, quantity FROM db_shopping_carts_items WHERE sc_id='" . $cart_id . "'"); 

while ($cart_details = $sql_select_cart->fetch_array()) 

Обратите внимание, что вы, кажется, использует fetch_array() на неправильном объекте и вы передаете его недопустимый параметр.

Чтобы убедиться, что вы видите какие-либо ошибки, вам необходимо убедиться, что вы их показываете, и вы должны их проверить, например, сообщив mysqli о том, чтобы делать исключения. Чтобы сделать это, при этом в верхней части скрипта:

ini_set('display_errors',1); 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
+1

и 'foreach' часть ненужной/лишняя, ОП может только непосредственно получить доступ к индексу' 'quantity' от $ cart_details' внутри время цикла , – Ghost

+0

@Ghost Там определенно что-то странное происходит там ... – jeroen

+0

Попробуй это и сообщите в течение нескольких минут, спасибо! :) – user1227914

Смежные вопросы