mysql 和 codeigniter 的奇怪插入行为

Posted

技术标签:

【中文标题】mysql 和 codeigniter 的奇怪插入行为【英文标题】:Weird insert behavior with mysql and codeginiter 【发布时间】:2010-05-17 14:18:54 【问题描述】:

我有一个相当简单的插入语句

<...>
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,因此该行被插入,其余的则不被插入。有什么想法可能是错的吗?

【问题讨论】:

【参考方案1】:

您正在第二个 if 语句中更改 $sql 的值。 124 和 128 是来自attr_values 表的属性。考虑在 if 语句中使用另一个变量名,或将第一个赋值移动到 foreach 循环内的 $sql (将其向下移动一行)。

【讨论】:

哈哈...是的,我刚刚注意到了。一定要喜欢愚蠢的错误。谢谢。

以上是关于mysql 和 codeigniter 的奇怪插入行为的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL在codeigniter中多次插入[重复]

在codeigniter中多次进入mysql时获取最后插入的'Id'

如何使用codeigniter 4框架在mysql数据库中插入多行?

Codeigniter MySQL 不正确的日期时间插入

如何在codeigniter中使用ajax在mysql数据库中插入数据?

在codeigniter中将form_dropdown数据插入mysql数据库