0

現時点ではこのループがありますが、データベースを 5 ~ 10 回呼び出す必要があります。アクションが遅くなるので、おそらく while ループを使用して、または他の誰かが考えられる代替手段を使用して、一度だけ呼び出すことができる方法はありますか。

foreach($_SESSION['cart_array'] as $each_item) {
   $item_id = $each_item['item_id'];
   $each_quantity = $each_item['quantity'];
   $item_qry = mysql_query("SELECT * FROM `products` WHERE `products_id`=$item_id");
   $item_row = mysql_fetch_assoc($item_qry);
   $product_price = $item_row['products_price'];
   $total_price += $product_price * $each_quantity;
}
4

2 に答える 2

0

1 つのクエリ ソリューション:

$item_id_array = array();
$item_to_quant = array();
foreach($_SESSION['cart_array'] as $each_item)
{
    $item_id_array[] = $each_item['item_id'];

    $item_to_quant[$each_item['item_id']] = $each_item['quantity'];
}

$item_qry = mysql_query("SELECT * FROM `products` WHERE `products_id` IN (" . implode(',', $item_id_array) . ")");


$total_price = 0;
$results     = array();

while ($item_row = mysql_fetch_assoc($item_qry))
{
    //add total price to result array
    $item_row['total_items_price'] = $item_row['products_price'] * $item_to_quant[$item_row['products_id']];

    $results[] = $item_row;

    $total_price += $item_row['total_item_price'];
}

結果配列と合計価格変数を結果として取得します。

于 2013-07-26T00:15:43.197 に答える