Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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 为什么我的codeigniter数据库查询在它成功搜索的字段上返回NULL_Php_Sql_Codeigniter_Activerecord - Fatal编程技术网

Php 为什么我的codeigniter数据库查询在它成功搜索的字段上返回NULL

Php 为什么我的codeigniter数据库查询在它成功搜索的字段上返回NULL,php,sql,codeigniter,activerecord,Php,Sql,Codeigniter,Activerecord,我真的很困惑,为什么我的item_id会得到一个空值,这是我表中的一个必填字段,也是我首先搜索的内容 以下是我的控制器的相关部分: $item_id=$this->uri->segment(4); $page_data['row'] = $this->item_model->get_item($item_id, TRUE); var_dump($page_data['row']); 这是我的模型: function get_item($id, $admin=FALSE)

我真的很困惑,为什么我的item_id会得到一个空值,这是我表中的一个必填字段,也是我首先搜索的内容

以下是我的控制器的相关部分:

$item_id=$this->uri->segment(4);
$page_data['row'] = $this->item_model->get_item($item_id, TRUE);
var_dump($page_data['row']);
这是我的模型:

function get_item($id, $admin=FALSE){
        $this->db
            ->select('*')
            ->from('item_entries')
            ->where('item_entries.item_id', $id)
            ->join('item_categories_rel', 'item_categories_rel.item_id = item_entries.item_id')
            ->join('item_descriptions', 'item_descriptions.item_id = item_entries.item_id')
            ->join('ratings_total', 'ratings_total.item_id = item_entries.item_id')
            ->join('item_categories', 'item_categories.cat_id = item_categories_rel.cat_id');
        if($admin==TRUE){
            $this->db
                ->join('admin_item_alerts', 'admin_item_alerts.item_id = item_entries.item_id')
                ->join('item_object_code', 'item_object_code.item_id = item_entries.item_id', 'left');
        }
        $query = $this->db->get();
        return $query->row_array();
    }
下面是var_转储的输出:

array(21) { ["item_id"]=> NULL ["item_name"]=> string(9) "MediaInfo" ["item_img"]=> string(13) "mediaInfo.gif" ["item_link"]=> string(42) "http://sourceforge.net/projects/mediainfo/" ["is_code"]=> string(1) "n" ["is_pick"]=> string(1) "n" ["is_quicklink"]=> string(1) "n" ["date_added"]=> string(19) "2010-10-01 00:03:04" ["rel_id"]=> string(3) "132" ["cat_id"]=> string(2) "10" ["item_desc"]=> string(9) "desc_here" ["site_rating"]=> string(3) "3.0" ["urate_ave"]=> string(3) "0.0" ["parent_id"]=> string(1) "2" ["gparent_id"]=> string(1) "0" ["sort_order"]=> string(1) "0" ["cat_name"]=> string(2) "PC" ["cat_slug"]=> string(2) "pc" ["date_checked"]=> string(19) "0000-00-00 00:00:00" ["UpCode"]=> string(1) "N" ["item_code"]=> NULL } 

有人知道它为什么这样对我吗:(?

您遇到的问题是,您选择了几个名为
item\u id
的列,因此结果将获取最后一个名为item\u id的列。要解决此问题,您需要不选择联接表的item\u id,或者为主表item\u id使用别名:

  $this->db->select('item_entries.item_id AS the_id')

(当然,您还需要在表中包含其他列。*语法)

您没有收到字段项\u id的多个响应吗?我会将响应重命名为…如果我通过phpmyadmin以SQL的形式运行它,我确实会这样做-但这不会在任何其他具有多个响应的字段查询中造成问题。如何使用AS in AR重命名响应?您只需将其与普通mysql syn一样放在select语句中即可tax$this->db->select('item_id AS myid');当查询结果中有多个同名列时,
$query->row_array()
将仅保留该名称的最后一列的值。如果在您的其他查询中,相同名称列的最后一个实例包含了您期望的值,那么您没有看到任何负面影响也就不足为奇了。我的最终联接可能包含也可能不包含匹配项。在链中向前移动此联接可解决以下问题:问题,这是否是一种糟糕的做法?我是否最好使用$this->db->select('item_id AS myid')解决方案?这有关系吗?