Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何序列化和取消序列化数组?_Php_Codeigniter - Fatal编程技术网

Php 如何序列化和取消序列化数组?

Php 如何序列化和取消序列化数组?,php,codeigniter,Php,Codeigniter,我想序列化以下内容: $product_detail = array( 'product_name' => $_POST['product_name'], 'product_price' => $_POST['product_price'], 'product_description' => $_POST['product_description'], 'product_size'

我想序列化以下内容:

$product_detail = array(
            'product_name' => $_POST['product_name'],
            'product_price' => $_POST['product_price'],
            'product_description' => $_POST['product_description'],
            'product_size' => $_POST['product_size'] // this line get the item in option "value" 
        );
$product_detail=serialize($product_detail); //convert array into string.
但当我取消序列化并将其输入db时,此错误显示:

INSERT INTO `products` (`0`) VALUES ('') 
如果我不取消序列化,它会显示:

INSERT INTO `products` (`QA92000I` like it alotLarge) VALUES ('') 

告诉我哪里出错了我正在使用codeigniter

在将数组插入数据库时,无需序列化和取消序列化codeigniter中的数组:-

您可以使用以下方法插入它:-

//这是控制器代码:-

function product()
{
 $this->load->model("your_model");// load your model file
    $product_detail = array(
                'product_name' => $_POST['product_name'],
                'product_price' => $_POST['product_price'],
                'product_description' => $_POST['product_description'],
                'product_size' => $_POST['product_size'] // this line get the item in option "value" 
        );
$this->your_model->product($product_detail);// pass your array directly to your model file

}

// this is your model code
function product($product_detail)
{
$this->db->insert('products',$product_detail)
}

我就是这样取消序列化的:

$product_detail=unserialize($product_detail);
这就是我将变量传递到模型的方式:

$this->Product_area_model->product_add_new($product_detail);
这是我的疑问:

$this->db->insert('products',$product_detail);

好的,如果您想序列化这些字段并将它们存储在行上的单个字段中,这很好,但是您需要知道要将序列化数据放入表中的哪个字段,因此这是基本流

function product($id)
{
   $this->load->model("your_model");// load your model file

   $product_detail = array(
            'product_name' => $_POST['product_name'],
            'product_price' => $_POST['product_price'],
            'product_description' => $_POST['product_description'],
            'product_size' => $_POST['product_size'] 
        );
   $product_detail=serialize($product_detail); 

   $product = array('id' => $id,
                    'product_details' = $product_detail
              );
   $this->your_model->insert($product);
}

这是您的控制器代码,您想将此数组插入数据库??是的,这是我的控制器代码,在取消序列化后我将其传输到模型,然后插入数据库而不取消序列化它仅显示值和不显示键(表列名称)请显示用于创建查询的PHP代码。这很可能是您的错误在序列化之前和取消序列化之后都是var_damp($product_detail)。这将有助于找到答案亲爱的问题是需要序列化,因为这是我的要求。我不明白为什么需要序列化。您可以用简单的方法来完成,因为我需要将该数组存储在会话表中。为此,我需要序列化,然后从会话中提取,然后取消序列化。这是您的问题的答案还是新信息?如果是这样,您可以编辑问题。请不要将信息作为答案写入。系统不允许我写这么大的答复。所以我输入它作为答案。我是stack exchange的新手。我没有告诉过你将其作为评论来写。我告诉过你编辑你的问题。