Codeigniter db->get() 返回空记录集

Posted

技术标签:

【中文标题】Codeigniter db->get() 返回空记录集【英文标题】:Codeigniter db->get() returns empty recordset 【发布时间】:2015-04-16 11:04:04 【问题描述】:

我的表user如下:

    | user_id | first_name | moniker     |
    |       1 | Noah       | noahsarkive |
    |       2 | Homer      | HomerK      |
    |       3 | Hot        | Inflated    |
    |       4 | Wimpy      | Wimpy B     |
    |       5 | Hubble     | SharpEyes   |

模型是User_model.php

<?php 
if ( ! defined('BASEPATH')) 
    exit('No direct script access allowed');


class User_model extends CI_Model 


    public function __construct() 
    parent::__construct();


public function get_users() 
    $this->db->select('user_id','first_name', 'moniker');
    $this->db->from('user');
    $rs = $this->db->get();
    var_dump($rs);
    return $rs;


但是当我执行var_dump($rs) 时,它会产生:

object(CI_DB_mysql_result)#25 (8) 
  ["conn_id"]=>
  resource(25) of type (mysql link persistent)
  ["result_id"]=>
  resource(36) of type (mysql result)
  ["result_array"]=>
  array(0) 
  
  ["result_object"]=>
  array(0) 
  
  ["custom_result_object"]=>
  array(0) 
  
  ["current_row"]=>
  int(0)
  ["num_rows"]=>
  int(5)
  ["row_data"]=>
  NULL

它返回正确的行数但没有数据! 再简单不过了,但我肯定遗漏了一些非常明显的东西。

感谢您的帮助。 诺亚

【问题讨论】:

$rs = $this->db->get()->result(); 【参考方案1】:

你需要对结果对象做一些事情,like so:

$rs = $this->db->get();
foreach ($rs->result() as $row)

   echo $row->user_id;
   echo $row->first_name;
   echo $row->moniker;

【讨论】:

但没有什么可回应的。结果集为空。注意 ["result_array"]=> array(0) IIRC,这些是类调用的空包装器,因此转储不会显示它。尝试简单地将您的代码更改为 var_dump($rs-&gt;result_array()); 并检查结果。【参考方案2】:
public function get_users() 

    $this->db->select('user_id ,first_name , moniker');//fix your select function like this
    $this->db->from('user');
    $rs = $this->db->get()->result();
    var_dump($rs);
    return $rs;

【讨论】:

【参考方案3】:

是损坏的数据库。删除模式并恢复它,然后一切正常。

感谢您的帮助。

【讨论】:

【参考方案4】:

试试这个,对你有帮助。

public function get_users()

    $this->db->select('user_id','first_name', 'moniker');
    $this->db->from('user');
     $info = $this->db->get();
    if($info->num_rows() > 0)
    
      return $info->result();
    
    else
    
      return NULL;

【讨论】:

以上是关于Codeigniter db->get() 返回空记录集的主要内容,如果未能解决你的问题,请参考以下文章

ci codeigniter 查询 获取 一条数据 db select get row_array()

交叉加入codeigniter?

如何使用mysql在codeigniter中计算总数

使用Codeigniter显示数据库中的数据

带有Codeigniter中If条件的MySQL get_where

Codeigniter,如何获取以json格式显示的数据库表数据?