Kohana中的数据库查询仅显示SQL而不显示结果行

时间:2011-11-09 22:56:32

标签: php kohana kohana-3 kohana-db

我刚刚开始使用Kohana框架而且我正在尝试执行一些查询,但是在文档中花了几个小时并运行一些测试之后,我所拥有的就是:

class Controller_Test extends Controller {
    public function action_index()
    {
       $query = DB::select()->from('test')->where('test', '=', '1');
       echo $query  
    }
}

现在,如果尝试运行它,那么它就是回显我的SQL。

如何从数据库中获取实际数据?我知道我可以做类似的事情:

$row = mysql_fetch_row(mysql_query($query));
echo $row[0];

它会起作用;但我想这完全是愚蠢的,因为我正在使用一个框架,并且必须有内置的方法。

3 个答案:

答案 0 :(得分:5)

你应该知道你实际上正在构建Database_Query对象,所以最后必须有一些东西可以执行它,对吗?

$results = DB::select('*')->from('table')->execute();

然后你可以正常循环这些:

foreach ($results as $result) { echo $result->id; }

答案 1 :(得分:2)

在构建查询之后,您需要使用Database_Query方法将其转换为execute()对象,以便您可以获取要运行的值。

如果要将查询结果作为数组处理,可以在执行后添加as_array()方法,如下所示:

$query = DB::select()->from('test')->where('test', '=', '1')
                     ->execute()->as_array();

如果您只处理一行,并且您知道只需要一行,则可以将其更改为current()

$query = DB::select()->from('test')->where('test', '=', '1')
                     ->execute()->current();

然后,当您遍历数组时,可以根据需要提取:

foreach ($query as $row)
{
    echo $row['title'];
}

答案 2 :(得分:0)

获取行:

$query = DB::select('p.id')
            ->select_array(array('p.title', array('p.title', 'pocket') ))
            ->from(array($this->_table_name, 'p'))
            ->limit(1);

echo $query->execute()->get('id');

显示查询:

echo $query->compile();