-1

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

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

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

表 3:is_i2f将每个度假村 ID 与功能 ID 连接起来。该表有 2 个字段:id_iid_f。这两个字段都是主键。

我创建了一个表格来插入一个新的度假村,但我被困在这里。我需要一个适当的 mysql 查询来在is_main表中插入一个新的度假村,并is_i2f为其拥有的每个功能插入一个记录,其中包含度假村 idid_i的 id 和功能 id 的 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; }
}

谢谢。拜托,我要疯了!!!!!!!!!!!!!

4

3 回答 3

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它,看看它的外观并测试它是否有效。

希望是这样。如果没有,对不起...

于 2013-01-31T11:05:04.270 回答
0

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

不填充链接表不是更有意义吗?您可以使用JOINs 然后选择在应用程序中填充各种视图等所需的内容

即查询获得 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

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

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

于 2013-01-31T09:52:10.120 回答