私がこのようなテーブルを持っている場合:
+-------------+-------------+
| Field | Type |
+-------------+-------------+
| document | varchar(35) |
| section | int(11) |
| selection | int(11) |
| status | varchar(35) |
+-------------+-------------+
そして、私はPHPの配列を持っています。それを呼びましょう$choices[]
。この列selection
は、choices配列の配列インデックスに対応しています。1つまたは複数の要素を$choices
配列に追加する場合は、データベースを更新する必要があります。$document
とが設定されているループで動作します$section
。番号付けの途中に行が欠落していないとは思いません。$choices
の各要素の(ドキュメント、セクション、選択)をチェックし、存在しない要素を作成し、そのステータスを「新規」に設定する最も効率的な方法は何ですか?これをループとして実行する必要がありますか、それとも1つのクエリでこれを実行する方法がありますか?
これは完全にテストされていませんが、基本的には、助けを求めなかった場合の方法です。私は誰かが私よりもはるかに優れた解決策を持っているかもしれないと推測しました。
foreach($documents as $document)
{
foreach($sections as $section)
{
$choices=$master_array[$document][$section];
$ch_count=count($choices);
$counter=0;
while($counter < $ch_count-1)
{
$query="SELECT status FROM mytable WHERE document='$document' AND section='$section' AND selection='$counter'";
$result = mysql_query($query);
if(mysql_num_rows($result)==0)
{
$query="INSERT INTO mytable VALUES('$document','$section','$counter','new')";
$result = mysql_query($query);
}
$counter++;
}
}
}