0

我有一个具有以下结构的表

     Bay | Slot1 | Slot 2 | Slot 3 | Slot 4 | Slot 5 
     -----------------------------------------------
      1  | time1 | time 2 | time 3 | time 4 | time 5

以下代码用于插入:

for ($i =1; $i <= $bayCount; $i++) {
    mysql_query("INSERT INTO $tableName (Bay) VALUES ($i)");

    for ($j=0; $j<$slotCount ; $j++) {  
       echo $i;
       echo $_slotColumns[$j];
       mysql_query("INSERT INTO $tableName ($_slotColumns[$j]) VALUES (slotValues[$j]) WHERE Bay = $i ");
    }

  }

间隔是增量类型的整数,插槽的值作为数组传递 (slotValues[$j]) 插槽列是使用 for 循环插入生成的。插槽值是文本类型。有人可以告诉我发生了什么吗?插入托架值但不插入槽值。我做错什么了吗?

4

5 回答 5

1

我猜你应该在第二个循环中更新评估者而不是插入。GL!

于 2013-03-07T09:58:06.890 回答
1

在第二个 INSERT 语句中删除 WHERE Bay = $i ,这将始终为假,因为它不存在。在这种情况下,您不能在 INSERT 查询中使用 WHERE,因为它总是返回 false。

您还忘记在 slotValues 前面放一个 $ 符号。在字符串中使用数组时,应始终将 {} 放在它们周围。(例如 {$_slotColumns[$j]}

for ($i =1; $i <= $bayCount; $i++) {
mysql_query("INSERT INTO $tableName (Bay) VALUES ($i)");

for ($j=0; $j<$slotCount ; $j++) {  
echo $i;
echo $_slotColumns[$j];
mysql_query("INSERT INTO $tableName ({$_slotColumns[$j]}) VALUES ({$slotValues[$j]})");
}
}

或者,如果您想更新插入托架的字段,而不是为每列添加新记录,您可以使用如下更新查询:

for ($i =1; $i <= $bayCount; $i++) {
    mysql_query("INSERT INTO $tableName (Bay) VALUES ($i)");

    for ($j=0; $j<$slotCount ; $j++) {  
    echo $i;
    echo $_slotColumns[$j];
    mysql_query("UPDATE $tableName SET {$_slotColumns[$j]} = {$slotValues[$j]} WHERE Bay = $i;");
    }
}
于 2013-03-07T10:03:20.820 回答
0

当您在 "" 中使用数组变量时,请尝试将它们放入 {}。{$_slotcolumns[$j]}

于 2013-03-07T09:57:55.570 回答
0

您可能对引号有疑问:

mysql_query("INSERT INTO $tableName (".$_slotColumns[$j].") VALUES ('".slotValues[$j]."') WHERE Bay = $i ");

或者你也这样做:

mysql_query("INSERT INTO $tableName ({$_slotColumns[$j]}) VALUES ('{slotValues[$j]}') WHERE Bay = $i ");

你必须注意到一个普通的查询需要这样的引号:

mysql_query("INSERT INTO $tableName (columnName) VALUES ('value') WHERE Bay = $i ");
于 2013-03-07T09:58:49.763 回答
0

你有两个单独的插入,所以你得到两个单独的行,第一行将只包含 Bay。

在我看来,您想要一个查询:

$query = "INSERT INTO $tableName (Bay, " . implode(',', $_slotColumns) . ") ";
$query .= "VALUES(" . implode(',', $slotValues). ")";
mysql_query($query);

I have no idea what you're trying to do with the WHERE; that makes no sense for INSERT.

于 2013-03-07T10:08:07.183 回答