插入问题 - MySQL通过PHP

时间:2013-03-07 09:53:27

标签: php sql insertion

我有一个包含以下结构的表

     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 ");
    }

  }

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

5 个答案:

答案 0 :(得分:1)

我猜你应该在第二个循环中更新rater而不是Insert。 GL!

答案 1 :(得分:1)

在第二个INSERT语句中删除WHERE Bay = $ i,这将始终为false,因为它不存在。在这种情况下,您不能在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;");
    }
}

答案 2 :(得分:0)

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

答案 3 :(得分: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 ");

答案 4 :(得分:0)

您有两个单独的插入,因此您将获得两个单独的行,而第一行只包含Bay。

我认为你想要一个查询:

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

我不知道你要对WHERE做些什么;这对INSERT毫无意义。