2017-06-10 108 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取決於保存陣列的數據表的列名。

相關問題