Mysql ve codeginiter ile garip uç davranış

1 Cevap php

Ben oldukça basit bir ekleme bildirimde

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

Tek şey, sadece bir ya da iki satır eklenir ediliyor olmasıdır. Ben yankı hat ben herhangi bir hata almıyorum çünkü her ekleme dönen satır id görmek için koymak. Örneğin ben üç öğe eklerseniz 18 id sonraki ve beklenen kimliği yüzden bu satır eklenir alır ve sonra gerisi yok olduğu yerlerde, 18, 124, 128. Gibi bir şey dönecektir. Herhangi bir fikir yanlış olabilir?

1 Cevap

Eğer ikinci if deyimi içinde $sql değeri değişiyor. 124 ve 128 attr_values tablodan nitelikleri olduğunu. Lütfen if deyimi içinde başka bir değişken adını kullanarak düşünün, ya da $sql foreach loop (bir satır aşağı hareket) içeriye ilk atama taşıyın.