我有一个相当简单的插入语句
<...>
if (!empty($attributes)) {
$sql = 'INSERT INTO `part_attrs` (`part_id`, `attr`, `type`, `list_order`) VALUES (?, ?, ?, ?)';
foreach($attributes as $key => $attribute) {
$this->db->query($sql, array($partid, $attribute[0], $attribute[1], $key));
$attrid = $this->db->insert_id();
echo $attrid.'<br />';
if (strlen($attribute[2]) > 0) {
$values = explode(',', $attribute[2]);
$sql = 'INSERT INTO `attr_values` (`attr_id`, `field_values`) VALUES (?, ?)';
foreach ($values as $value) {
$this->db->query($sql, array($attrid, trim($value)));
}
}
}
}
<...>
奇怪的是只有一两行被插入。我把那个回显线放进去查看它为每个插入返回的行ID,因为我没有收到任何错误。例如,如果我插入三个项目,它将返回类似 18、124、128 的内容。其中 18 id 是下一个预期的 id,因此该行被插入,其余的则不被插入。有什么想法可能是错的吗?