我有一个具有以下结构的表
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循环生成以插入。插槽值为文本类型。有人能告诉我发生了什么事吗?将插入间隔值,但不会插入插槽值。我做错什么了吗?
在第二个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;");
}
}
我想您应该在第二个循环中更新rater而不是Insert。GL!
当您在"中使用数组变量时,请尝试将它们放入{}中。{$_slotcolumns〔$j〕}
您可能有报价问题:
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 ");
您有两个独立的插入,所以您得到了两个独立的行,第一行只包含Bay。
在我看来,你想要一个查询:
$query = "INSERT INTO $tableName (Bay, " . implode(',', $_slotColumns) . ") ";
$query .= "VALUES(" . implode(',', $slotValues). ")";
mysql_query($query);
我不知道你们想用WHERE
做什么;这对于CCD_ 2来说毫无意义。