5

異なる行の単一の列に値を挿入する方法について助けが必要です。

現在、次のような値を与える内破配列があります。

('12'、'13'、'14')

これらの数字は、DB に挿入したい新しい ID です。
配列を内破するために使用したコードは次のとおりです。

$combi = "('".implode("', '",$box)."')"; // $box は初期配列です

私が使用する予定のクエリはここで行き詰まります:

mysql_query(" INSERT INTO studentcoursedetails ( studentID)

1 つのオプションはこれを繰り返すことですが、配列がループするため、できません。3 つの ID があるかもしれませんし、20 あるかもしれません。
ループは正しくないようです。どんな助けでも大歓迎です。

4

6 に答える 6

3

テーブルに複数の値を挿入するには、(value1), (value2) 構文を使用する必要があります。

$combi = "('".implode("'), ('",$box)."')";

PS: この機能は行値コンストラクターと呼ばれ、SQL-92 以降で使用できます。

于 2011-01-24T12:58:32.837 に答える
2

次のようなことはできませんか。

for($x = 0; $x < count($box); $x++)
{
  mysql_query("INSERT INTO studentcoursedetails (studentID) VALUES ($box[$x]);
}

これは配列で直接機能し、$box の値ごとに新しい行を挿入し、配列をカンマ区切りの文字列に分割する必要もありません。

ID をカンマ区切りの文字列として保存することは、最初は単純なモデルのように思えるかもしれませんが、長期的には、正規化されていないデータベースを操作しようとすると、問題が尽きることはありません。

于 2011-01-24T12:58:09.223 に答える
2

SQL の一部のフレーバーでは、複合挿入が可能です。

insert into studentcoursedetails (studentid) values
   (1),
   (2),
   (3),
于 2011-01-24T12:59:22.977 に答える
2

MySQL を使用している場合は、1 つの文に複数の値を挿入できます。

sql> insert into studentcoursedetails (studentID)
   > values (('12'), ('13'), ('14'));

したがって、その文字列を PHP で作成するだけで完了です。

于 2011-01-24T13:00:31.587 に答える
1

内破を介してステートメントを作成することもできます。VALUES を使用しないでください。代わりに SELECT を使用してください

$combi = " ".implode(" UNION ALL SELECT ",$box)." "; // Where $box is the initial array
mysql_query("INSERT INTO studentcoursedetails (studentID) SELECT " . $combi)

は、SELECT .. union多くの dbms で移植可能です。

ID に注意してください - 数字の場合は、引用しないでください。

于 2011-01-24T12:59:00.903 に答える
0

配列パラメーターで動作する mysql_query 関数のバリアントがあるかどうかを確認してください。

于 2011-01-24T12:59:04.193 に答える