-1

2 つの異なる mysql テーブルにレコードを挿入しようとしています。状況は次のとおりです。

表 1:is_mainと呼ばれる主キーを持つリゾートのレコードが含まれていますid

表 2:is_featuresリゾートが持つことができる機能 (ビーチ、スキー、スパなど) のリストが含まれています。各機能には、 と呼ばれる主キーがありますid

表 3:is_i2f各リゾート ID を機能 ID に接続します。このテーブルには と の 2 つのフィールドがid_iありid_fます。どちらのフィールドも主キーです。

新しいリゾートを挿入するフォームを作成しましたが、ここで立ち往生しています。is_mainテーブルに新しいリゾートを挿入し、リゾート idの id と機能 id の id をis_i2f使用して、機能ごとに 1 つのレコードを挿入するには、適切な mysql クエリが必要です。id_iid_f

$features = ['beach','relax','city_break','theme_park','ski','spa','views','fine_dining','golf'];

mysql_query("INSERT INTO is_main (inv_name, armchair, holiday, sipp, resort, price, rooms, inv_length, more_info)
VALUES ('$name', '$armchair', '$holiday', '$sipp', '$resort', '$price', '$rooms', '$length', '$more_info')");

$id = mysql_insert_id();

foreach($features as $feature) {
    if(isset($_POST[$feature])) {
        $$feature = 1;
        mysql_query("INSERT INTO is_i2f (id_i, id_f) VALUES (" . $id . ", ?????????????? /missing part here????/ ); }
    else {
        $$feature = 0; }
}

ありがとう。お願いします、私はCrAzYに行きます!!!!!!!!!!!!!!!!

4

3 に答える 3

0

Mysql insert into 2 tablesで答えを見つけてください。

一度に複数の挿入を行いたい場合は、ニーズを満たすために SP を書くことができます

于 2013-01-31T09:52:10.120 に答える
0

これはあなたには関係ないかもしれませんが...

リンクテーブルを空のままにしておく方が理にかなっているでしょうか? s を使用JOINして、アプリケーションのさまざまなビューなどに入力するために必要なものを選択できます

つまり、すべての機能を備えた 1 つのリゾートを取得するクエリ:

SELECT
    Id,
    f.Id,
    f.Name
FROM IS_MAIN m
CROSS JOIN IS_FEATURES f
WHERE m.Id = $RequiredResortId
于 2013-01-31T09:48:22.310 に答える
0

私があなたを正しく理解していれば、挿入/選択される値の可変量を1つのクエリに連結できます。(これはid、最初の を必要とする 2 番目のクエリです。)

//initializing variables
$id = mysql_insert_id();
$qTail = '';
$i = -1;

//standard beginning
$qHead = "INSERT INTO `is_i2f` (`id`,`feature`) VALUES ";

  //loop through variable amount of variables
  foreach($features] as $key => $feature) {
    $i++;

    //id stays the same, $feature varies
    $qValues[$i] = "('{$id}', '{$feature}')";

    //multiple values into one string
    $qTail .= $qValues[$i] . ',';

  } //end of foreach

//concatenate working query, need to remove last comma from $qTail
$q = $qHead . rtrim($qTail, ',');

これで、使用可能なinsertqueryが作成されました$q。ちょうどechoそれがどのように見えるかを見て、それが機能するかどうかをテストします.

これが事実であることを願っています。そうでない場合は、申し訳ありません...

于 2013-01-31T11:05:04.270 に答える