mysql - 插入多对多的关系

时间:2013-01-31 09:34:04

标签: mysql insert many-to-many

我试图在两个不同的mysql表中插入记录。情况如下:

表1:is_main包含名为id的主键的度假村记录。

表2:is_features包含度假村可以拥有的功能列表(即海滩,滑雪,水疗等......)。每个功能都有一个名为id的主键。

表3:is_i2f将每个度假村ID与功能ID相关联。此表包含两个字段:id_iid_f。这两个字段都是主键。

我已经创建了一个表单来插入一个新的度假胜地,但我被困在这里。我需要一个正确的mysql查询来在is_main表中插入一个新的求助,并在is_i2f中为每个要素插入一条记录,其中id为度假村ID id_i和id功能标识id_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 !!!!!!!!!!!!!!

3 个答案:

答案 0 :(得分:0)

这可能与您无关,但是......

让链接表无人居住会更有意义吗?您可以使用JOIN来选择填充应用程序中各种视图等所需的内容

即。查询以获得具有所有功能的1个度假胜地:

SELECT
    Id,
    f.Id,
    f.Name
FROM IS_MAIN m
CROSS JOIN IS_FEATURES f
WHERE m.Id = $RequiredResortId

答案 1 :(得分:0)

请在Mysql insert into 2 tables上找到答案。

如果您想一次多次插入,可以编写SP以满足您的需求

答案 2 :(得分:0)

如果我理解正确,您可以将可插入/选定值的可变数量连接到一个查询中。 (这是第一个需要id的查询。)

//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, ',');

现在您应该有一个可用的insert查询$q。只需echo它,看看它的外观和测试是否有效。

希望是这样的。如果没有,抱歉...