我试图将此数据存储在数据库中,但出现错误。如何解决这个问题?
我只想将多维数组存储在一个列中。
$data = array(
'2017' => array(
'6' => array(
'10' => array(
'count' => 76
),
),
),
);
$getdata = $this->view_count->setView($data);
型号
public function setView($data)
{
$setData = $this->db->where('short', 'honwl')->update('ci_links', $data['view_count']);
return $setData;
}
我得到的错误 遇到 PHP 错误
严重性:注意
消息:未定义索引:view_count
文件名:models/View_count.php
行号:14
回溯:
文件:C:\wamp\www\blog\application\models\View_count.php 线路:14 函数:_error_handler
文件:C:\wamp\www\blog\application\controllers\Dashbord.php 线路:52 功能:设置 View
文件:C:\wamp\www\blog\index.php 线路:315 函数:require_once
发生数据库错误
您必须使用“set”方法来更新条目。
文件名:C:/wamp/www/blog/system/database/DB_query_builder.php
行号:1864
最佳答案
如消息所述,您没有 key $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;
}
关于php - CodeIgniter多维数组存储在mysql数据库单列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44475620/