未定义的变量混淆codeigniter活动记录

时间:2014-01-23 15:50:41

标签: php arrays database codeigniter

我有以下代码,

这是我处理文本字段输入类型的地方,其中我输入配方的成分。 一个人应该如何输入成分的正确格式是这样的。

5毫升牛奶,4毫升水,2片胡萝卜

之间总是有分隔符,因为我有不同的数量,计量单位和名称列。

我对分离没有任何问题。我有另一张桌子。这是命名成分。 这就是我在不同的成分,如牛奶,并把他们所属的食物组和他们的营养信息(它发出的,如钙)。

无论如何,我得到一个数据库错误,不知何故,当我尝试在所有处理后插入时,类型和营养都是null。我已经考虑过了,也许我的查询错了?但它没有发出任何警告或通知。虽然它只是给了我注意/警告,当我试图在数组$ comp声明它们时,两个值都是未定义的,这是要插入的值。

我收到此错误,

  

错误号码:1048

     

列'营养'不能为空

     

INSERT INTO componentcomponentnamequantityunit,   nutritiontype)VALUES('milk','5','ml',NULL,NULL)

     

文件名:C:\ www \ KG \ system \ database \ DB_driver.php

     

行号:330

代码:

function insertrecipe()
    {
        $ingredients = $this->input->post('ingredients');
        $recipename = $this->input->post('recipename');

        $recipe = array(
            'recipename' => $recipename,
            'description' => $this->input->post('description'),
            'instruction' => $this->input->post('instructions'),
            'serving' => $this->input->post('serving'),
            );      

        $this->db->insert('recipe', $recipe);

        $this->ingredient($ingredients,$recipename);
    }

    function ingredient($ingredients,$recipename)
    {
    $ids = array();
    $first_slice = explode(',',$ingredients);
    $secondslice = $this->second_slice($first_slice);


            foreach($secondslice as $qty => $iname)
            {
                $arr = explode('-',$qty);
                $third_slice[$arr[1]] = $arr[0];

                $sql = $this->db
                            ->select('nutrition,group')
                            ->where('ingname', $iname)
                            ->from('ingredients')
                            ->get()
                            ->result_array();

                $result = $this->db->query($sql);

                foreach($result->result_array() as $row)
                {
                $ingredient_type = $this->get_ingredient_type($row['group']);
                }

                foreach($third_slice as $measure => $num)
                {
                $comp = array(
                                'componentname' => $iname,
                                'quantity' => $num,
                                'unit' => $measure,
                                'nutrition' => $nutri,
                                'type' => $ingredient_type
                                );
                    if($insert2 = $this->db->insert('component',$comp))
                    {   
                        $latest_id = $this->db->insert_id();

                        $ids[] = $latest_id;
                    }
                }

            }
    }



    function second_slice($data)
    {
            foreach($data as $key => $value)
            {
            $ingredient = explode(' ', trim($value));
            $second_slice[$ingredient[0]] = $ingredient[1];
            }

    return $second_slice;
    }


    function get_ingredient_type($data)
    {
                //foreach($data->result_array() as $row)
                //{ 
                    if($data['group'] == "vegetable")
                    {
                        $type = 1;
                    }
                    else if($data['group'] == "fruit")
                    {
                        $type = 2;
                    }
                    else if($data['group'] == "dairy")
                    {
                        $type = 3;
                    }
                    else if($data['group'] == "seafood")
                    {
                        $type = 4;
                    }
                    else
                    {
                        $type = 5;
                    }
                //}
    return $type;
    }

组件的数据库表包含以下列。

componentid componentname   quantity    unit    nutrition   type

营养是varchar单位是int。我猜他们不是null或cols,不接受空值。

我将不同的foreach循环分成了函数。我原本以为错误是因为我在该函数中仅有3-5个循环。所以我决定把它们分成几个函数。

0 个答案:

没有答案