2016-10-07 11 views
0

私は、価格のリストを作成する準備ができています。価格は、品目の価額に数量を掛けて決定されます。PHPプリペアドステートメントの各ステップ内に行を追加するにはどうすればよいですか?

if ($select = $db -> prepare("SELECT value, quantity FROM items")) 
{ 
    $select -> execute(); 
    $select -> bind_result($value, $quantity); 
    while ($select -> fetch()) 
    { 
     $subtotal = $value * $quantity; 
     echo $subtotal.'<br />'; 
    } 
    $select -> close(); 
} 

// I want to put the $total here. 

これは、番号のリストを出力します

100 
50 
200 
1.50 

私は何とか各$小計を追加して、私のプリペアドステートメントの外に別の変数「$合計」に入れたいと思います。これはクエリ内で数学を行うことなく行うことができますか?

+1

おそらく '$ total + = $ subtotal;'? – Rasclatt

+0

プレースホルダのない準備済みの文を、再利用できない文脈で使用しているのはなぜですか? –

+0

@JuanTomasこれは、私が達成しようとしていたもののダンボールされた例です。私の実際のコードはもっと複雑です。ありがとう、結構です。 –

答えて

5

このように、合計金額の値を計算するために準備されたステートメントの変数$total = 0外を宣言し、while()ループでそれを使用します。

$total = 0; 
if ($select = $db -> prepare("SELECT value, quantity FROM items")){ 
    $select->execute(); 
    $select->bind_result($value, $quantity); 
    while($select -> fetch()){ 
     $subtotal = $value * $quantity; 
     $total += $subtotal; 
    } 
    $select->close(); 
} 
echo $total; 

追記: @フレッド-IIと同様に@ JuanTomasは、プレースホルダなしで準備文を使用しているので、->prepare()を​​に変更して->execute()文を完全に削除しても、コードには何の違いもありません。

+1

Sidenote:* prepare()は何も準備していないので、 'prepare()'を 'query()'に変更して 'execute()'を削除してコードを少なくすることもできます;-) –

+0

ええ、それは私が手に入れようとしていたものです。 –

+0

@ Fred-ii-、JuanTomas:私はサイドノートも含めました。しかし、ちょうど私の好奇心は、準備ができている声明をそのままにしておくのがいいでしょう。 –

関連する問題