PDO を使用して、1 行以上を受け取り、次のような配列に変換します。
while($row = $car_sales->fetch(PDO::FETCH_ASSOC)){
$car_id_array[] = $row["car_id"];
$car_type_array[] = $row["car_type"];
$dealer_id_array[] = $row["dealer_id"];
$buyer_id_array[] = $row["seller_id"];
}
配列の各レベルを単純に「混合」してユニットとして機能させ、foreach ループを一緒に下って、$q クエリを順番に送信しようとしています。つまり、次のようなものです。
foreach($dealer_id_array as $dealer_id) {
if ($car_type=='new') {
if ($dealer_id==$buyer_id){
$q = 'UPDATE car_sales SET new_cars=new_cars+1 WHERE dealer_id=:dealer_id';
} else if ($dealer_id!=$buyer_id){
$q = 'UPDATE car_sales SET new_cars=new_cars-1 WHERE dealer_id=:dealer_id';
} else if ($car_type=='old') {
if ($dealer_id==$buyer_id){
$q = 'UPDATE car_sales SET old_cars=old_cars+1 WHERE dealer_id=:dealer_id';
} else if ($dealer_id!=$buyer_id){
$q = 'UPDATE car_sales SET old_cars=old_cars-1 WHERE dealer_id=:dealer_id';
}
$car_update = $dbhandle->prepare($q);
$car_update->execute(array(':dealer_id' => $dealer_id));
}
while ループから取得した値が 1 つだけの場合、ループは最初の配列値で実行する必要があります。それ以上ある場合、 foreach は、順序を尊重しながら、 while ループからの deal_ids と同じ回数実行する必要があります。この例は機能しませんが、この問題を正しく解決するための解決策を探しています。これを行うための最も効率的な方法は何だと思いますか?