1

配列の値でデータベースを更新する必要があるプロジェクトに取り組んでいます。更新クエリで正しいデータベース エントリが選択されるように、開始値は 0 ではなく 1 にする必要があります。

配列を印刷すると (以下を参照)、結果は値 1 から返されますが、データベースは正しく更新されません。データベースは、配列の値 0 でまだ更新中です。

foreach($rowPrice as $priceID => $price) {
 $rowPrice = array_combine(range(1, count($rowPrice)), array_values($rowPrice));
  mysql_query("UPDATE ---- SET price='$price' WHERE id='$priceID' AND store_id='$store' LIMIT 1") or die (mysql_error());
}


これは、印刷時の配列の一部です。この部分は機能していますが、更新クエリを介して変換されていません。

配列


これは、データベース内のエントリが更新される方法です。

データベース


ご覧のとおり、クエリは 2 から始まる配列値のみを挿入しています。

私は何を間違っていますか?これを行うより良い方法はありますか?

4

1 に答える 1

1

反復処理を開始する$rowPrice 前に、インデックスを再作成してください。

$rowPrice = array_combine(range(1, count($rowPrice)), array_values($rowPrice));
foreach($rowPrice as $priceID => $price) {
    mysql_query(...);
}

ただし、この方法は、配列内の値とデータベース内の ID の間の関連付けについて仮定を行うため、壊れやすいようです。更新中に参照できるように、元の ID を配列に入れておくとよいでしょう。

于 2012-07-16T16:23:55.437 に答える