2017-01-10 13 views
-3

私はカートのテーブルから合計価格を取得しようとしています。製品である他の表のproduct_price。私は総価格ではなく、最新の価格を取得しています。おかげでpdoを使用した合計配列合計

私は右この1つのクエリはあなたが必要とするすべてであるべき構造を読んでいる場合
// function total_price(){ 

$total = 0; 

global $db; 
$ip = getIp(); 

    $sql = $db->query("SELECT * from cart WHERE ip_add='$ip'"); 

    $no=$sql->rowCount(); // number of rows affected by the last SQL statement 
    if ($no == 0){ 
     echo ""; 


    } else { 
     foreach($sql as $row) 

      $product_id = $row["p_id"]; 
      $sql = $db->query("SELECT product_price from product WHERE product_id='$product_id'"); 
      $no=$sql->rowCount(); // number of rows affected by the last SQL statement 
      if ($no == 0){ 
      echo ""; 
      } 
      else 
      { 
      foreach($sql as $row) 
      $product_price = array($row["product_price"]); 

      $values = array_sum($product_price); 
      $total += $values; 

      } 
    } 

    echo "RM" . $total; 

     } 
+0

を、あなたがそれを行うことができます単一の問い合わせ – nogad

+0

'fetch'は1つの行だけを取得します。ループしてください。また 'ip'はユーザにとって一意ではありません。 SQLインジェクションにもオープンで、パラメータ化できます。 – chris85

答えて

1

:あなたが必要とするすべては、カートのアイテムの価格の合計がある場合

select sum(product_price) from product 
inner join cart on product.product_id=cart.product_id 
+0

私はこのコードを変更しましたが、総価格関数の出力はありません。total_price(){ global $ db; $ ip = getIp(); $クエリ= $ DB-> p.product_id ON Pで製品を登録しよう Cとカートから合計AS(」 SELECT SUM(p.product_price * c.quantity)を調製= c.p_id WHERE c.ip_add =: ip '); $ query-> bindParam( ':ip'、$ ip); $ query-> execute(); $ row = $ query-> fetch(PDO :: FETCH_ASSOC); if($ row){ $ total =(float)$ row ['total']; } else { $ total = 0; } return $ total; } – linda