【问题标题】:Query resulting empty in Codeigniter在 Codeigniter 中查询结果为空
【发布时间】:2013-02-17 09:58:12
【问题描述】:

我有一段用 Codeigniter 框架编写的 PHP 代码,它什么都不返回(一个空集)。 看看它,告诉我它有什么问题。

function sbsn($serial){
    $this->db->select('asset_types.name as type_name,asset_brands.name as brand_name');
    $this->db->from('asset_types,asset_brands,assets');
    $this->db->where('assets.type_code','asset_types.code');
    $this->db->where('assets.brand_code','asset_brands.code');
    $this->db->where('serial_no',$serial); 
    $result = $this->db->get();
    return $result;
}

【问题讨论】:

  • 您是否在数据库控制台中运行了等效查询?在 CodeIgniter 中,您能否打开查询日志记录以确保将语句按您的意图发送到数据库服务器?
  • 您的 Where 语句是否正确?您检查 assets.type_code 是否为“asset_types.code”字符串

标签: php sql codeigniter


【解决方案1】:

你好 db get 你只得到结果集而不是记录从结果中得到结果你必须做以下事情

$this->db->get()->result(); // will return an array of objects
$this->db->get()->result_array(); //will return result in pure array
$this->db->get()->row() // just single row as object
$this->db->get()->row_array() // just single row as array

you can use $result to perform the same above things
$result->result();
$result->row();

更多信息请阅读生成结果user guide

【讨论】:

    【解决方案2】:

    改变:

    $result = $this->db->get();
    

    $result = $this->db->get()->row_array();  //to get single row
    //OR
    $result = $this->db->get()->result_array();  //to get multiple rows
    

    或者尝试使用 JOIN,比如

    $this->db->select('asset_types.name as type_name,asset_brands.name as brand_name');
    $this->db->from('assets');
    $this->db->join('asset_types', 'asset_types.code = assets.type_code', 'left');
    $this->db->join('asset_brands', 'asset_brands.code = assets.brand_code', 'left');
    $this->db->where('assets.serial_no',$serial); 
    $result = $this->db->get()->result_array();
    return $result;
    

    【讨论】:

    • 虽然它与在视图文件中使用:$result->result() as $sth 相同,但它不起作用sudhir!
    • 尝试做 echo $this->db->last_query();在获取()之后;检查你的 sql 是否像你想要的那样......?
    【解决方案3】:

    通过以下方式连接表格可以轻松解决问题。

    $this->db->select('at.name as type_name,ab.name as brand_name');
    $this->db->from('asset_types as at,asset_brands as ab');
    $this->db->join('assets as a', 'a.type_code = at.code and a.brand_code as ab.code');
    $this->db->where('a.serial_no',$serial); 
    $result = $this->db->get()->result_array();
    return $result;
    

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      相关资源
      最近更新 更多