0

codeigniters db->get() に関して問題があります。「手動で」dbに渡すと結果が得られますが、codeigniterを使用すると空の結果が得られます。ほとんど同じクエリですが、where の代わりに like が機能します。

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(); $query->result(); を返します。

データベースに送信される前に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" 

しかし、結果は常に空ですが、上記をコピーしてデータベースに直接問い合わせようとすると、必要な結果が得られます。

誰がそれを引き起こしているのか知っていますか?

4

1 に答える 1

4

結果を取得したい場合は、row() または result() 関数を使用する必要があります。

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