0

INSERT ループがあり、それに参照番号を追加する必要があります。ループ内のすべての参照番号が同じである必要があります。MAX() を使用すると、テーブル内の最大数を選択できることがわかっています。しかし、ループすると、同じままにする必要がある間、ループごとに増加します。

クエリ自体でこれを行う方法はありますか? それとも、ループ外の変数に保存する唯一の方法ですか?

コード例:

    for($i=2;$i<=$row_count;$i++){ // Loops 3 times (example)
    $part = $vehicle.'_part'.$i;
    $description = $vehicle.'_description'.$i;
    $imageName = $vehicle.'_image'.$i;
    $parts[] = array(
        'part' => $_SESSION[$part],
        'image' => $_SESSION[$part],
        'description' => $_SESSION[$description]);
    }

    foreach($parts as $onePart){    
            $queries[] = "INSERT INTO searches_tbl (ref_nr, vozila_id, korisnici_id, part, description, image)
                        VALUES (???, (SELECT id FROM vozila_tbl ORDER BY id DESC LIMIT 1), 
                            (SELECT id FROM korisnici_tbl WHERE email = '".$email_address."' ORDER BY id DESC LIMIT 1), '".$onePart['part']."', '".$onePart['description']."', '".$onePart['image']."')";
    }
4

1 に答える 1

1

searches_refAUTO_INCREMENT 主キー列だけで、新しいテーブルを作成できます。

CREATE TABLE searches_ref( idINT NOT NULL AUTO_INCREMENT PRIMARY KEY );

次に、ループの前に新しい行を挿入しsearches_ref、ループで使用できる新しい ID を取得します。

このようにして、同時実行性の問題が発生しないようにする必要があります (これはおそらく を使用して発生しますMAX()) 。

于 2014-04-28T09:10:35.753 に答える