2017-06-10 74 views
1

我试图在数据库中存储这些数据,但是出现错误。如何解决这个问题?CodeIgniter多维数组存储在mysql数据库中的单列

我想简单地将多维数组存储在一个列中。

$data = array(
      '2017' => array(
       '6' => array(
        '10' => array(
         'count' => 76 
        ), 
       ), 
      ), 
     ); 

$getdata = $this->view_count->setView($data); 

这我得到 一个PHP误差模型

public function setView($data) 
    { 
     $setData = $this->db->where('short', 'honwl')->update('ci_links', $data['view_count']); 
     return $setData; 
    } 

错误遇到

严重性:注意

消息:未定义指数:VIEW_COUNT

文件名:型号/ View_count.php

行号:14

回溯:

文件:C:\ WAMP \ WWW \博客\程序\ \型号View_count.php 线:14 功能:_error_handler

文件:C:\ WAMP \ WWW \博客\程序\ \控制器Dashbord.php 线:52 功能:的setView

文件:C:\ WAMP \ WWW \博客\的index.php 线:315 功能:require_once

数据库出错

您必须使用 “设置” 方法来更新条目。

文件名:C:/wamp/www/blog/system/database/DB_query_builder.php

行号:1864年

回答

0

至于有消息称,你没有钥匙$data['view_count']但你必须$data[2017][6][10]['count']值。我假设这些日期是动态变化的,所以你需要通过密钥count来获得内部数组的值。 如果你的数组总是有相似的键,即$data[year][month][day][count],你可以使用this answer的代码(位修改)来获得该键值。通过此功能过滤出的第一种方法的利用价值在你的模型放在

private function getCount($arr, $search) 
{ 
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr)); 
    foreach($iterator as $key => $value) { 
     if($search == $key && $value !== '') { 
      return $value; 
     } 
    } 
    return false; 
} 

然后:

public function setView($data) 
{ 
    $count = $this->getCount($data, 'count'); 

    if ($count !== false) { 
     $setData = $this->db->where('short', 'honwl')->update('ci_links', $count); 
     return $setData; 
    } 
    return false; 
} 
+0

$数据=阵列( \t \t \t '2017'=>数组( \t \t \t \t '6' \t =>数组( \t \t \t \t \t '10'=>数组( \t \t \t \t \t \t'count'\t => 76 \t \t \t \t \t) \t \t \t \t \t '11'=>数组( \t \t \t \t \t \t '计数' \t => 42 \t \t \t \t \t) \t \t \t \t \t '15'=>数组( \t \t \t \t \t \t '计数' \t => 23 \t \t \t \t \t) \t \t \t \t) \t \t \t) \t \t); 我只想将多维数组存储在一个列中。 –

+0

似乎我回答[“是”部分问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem#answer-66378)? – Tpojka

0

根据您的示例代码,你可以编码阵列数据JSON保存到列,然后得到回由解码:

控制器:

$data = array(
      '2017' => array(
       '6' => array(
        '10' => array(
         'count' => 76 
        ), 
       ), 
      ), 
     ); 

$getdata = $this->view_count->setView($data); 
$data = $this->view_count->getView(); 

型号:

public function setView($data) 
{ 
    $data = json_encode($data); 
    $setData = $this->db->where('short', 'honwl')->update('ci_links', array('column_name'=>$data)); 
    return $setData; 
} 

public function getView($data) 
{ 
    $row = $this->db->where('short', 'honwl')->get('ci_links')->row(); 
    return json_decode($row->column_name, true); 
} 

column_name取决于保存阵列的数据表的列名。

相关问题