私はforeachを使用して配列からデータを保存しようとしていますが、たびに配列の最後の要素を保存しています。各ループのPHPは最後の要素のみを返します
public function demo($cakeId, $percent) {
$query = $this->dbh->prepare("SELECT price, price * $percent/100 as dprice FROM prices WHERE cake_id = ? ");
$query->execute(array($cakeId));
$prices = $query->fetchAll(\PDO::FETCH_ASSOC);
foreach ($prices as $key => $value) {
$d_amount = $value['dprice'];
$price = $value['price'];
$final_price = $price - $d_amount;
}
$query2 = $this->dbh->prepare("UPDATE prices SET discount_price = ? WHERE cake_id = ?");
$query2->execute(array($final_price,$cakeId));
$return['data'] = [];
$return['message'] = "Discount Added";
$return['msgType'] = true;
return $return;
}
$prices
は、すべての価格を含む配列ですが、私はループ内で$prices
を使用する場合、それが唯一の最後の要素を返します。
は、ここに私のコードです。
私はこの問題を解決するのを手伝ってください。
[各ループでforeachループ内で宣言されたPHP変数が破棄され、再作成されますか?](https://stackoverflow.com/questions/13626812)/are-php-variables-inside-a-foreach-loop-destroy-and-re-created-at-eac) – Pyromonk
更新クエリの 'where'条件??? –
はいどこに条件がありますか。 –