0

我有关于 codeigniters db->get() 的问题。我有正常的sql查询,当我“手动”将它传递给db时,我得到了结果,但是当我使用codeigniter时,我得到了空结果。几乎相同的查询,但使用 like 而不是 where 有效。

SQL 是:

SELECT se.Id, se.Name, se.Alias, sy.Name as System, os.Name as Os, ac.Name as Access, se.Description
FROM cdl_server se
INNER JOIN cdl_system sy on sy.Id = se.System
INNER JOIN cdl_os os on os.Id = se.Os
INNER JOIN cdl_access ac on ac.Id = se.Access
WHERE se.Id = 1

代码如下所示:

    $this->db->select(
            'se.Id, se.Name, se.Alias, ' . 
            'sy.Name as System, os.Name as Os, ac.Name as Access, ' . 
            'se.Description', 
            FALSE);
    $this->db->from('cdl_server se');
    $this->db->join('cdl_system sy', 'sy.Id = se.System' ,'inner', FALSE);
    $this->db->join('cdl_os os', 'os.Id = se.Os' ,'inner', FALSE);
    $this->db->join('cdl_access ac', 'ac.Id = se.Access' ,'inner', FALSE);
    $this->db->where('se.Id', $id, FALSE);
    $this->db->get();

编辑:我像这样使用它: $query = $this->db->get(); 返回$查询->结果();

当我在将 sql 查询发送到数据库之前对其进行 var_dump 时,我得到以下信息:

string(264) "SELECT se.Id, se.Name, se.Alias, sy.Name as System, os.Name as Os, ac.Name as Access, se.Description FROM cdl_server se INNER JOIN cdl_system sy ON sy.Id = se.System INNER JOIN cdl_os os ON os.Id = se.Os INNER JOIN cdl_access ac ON ac.Id = se.Access WHERE se.Id =1" 

但是结果总是空的,即使当我复制上面的内容并尝试直接询问 db 时,我得到了我需要的结果。

有谁知道可能是什么原因造成的?

4

1 回答 1

4

如果你想得到结果,你必须使用 row() 或 result() 函数。

$this->db->get()->result();
于 2012-07-25T10:42:48.697 回答