如何从Kohana的select语句中获取数据?

时间:2010-09-17 19:46:26

标签: php kohana

如果我有这个代码(来自他们的文档)

$query = DB::query(Database::SELECT, 'SELECT * FROM users WHERE username = :user');
$query->param(':user', 'john');
$query->execute();

我如何访问从此返回的实际数据?

我正在寻找一个包含$array['username']的关联数组,以及users表中的其他任何列。

我试过了:

#1
echo $query->execute();
#2
$row = $query->execute();
echo $row['username'];
#3
$query->fetch();

这些都不起作用。我错过了什么?

3 个答案:

答案 0 :(得分:2)

Database_Result object是数据库行列表的包装器。通常它与foreach一起使用:

$rows = DB::query(Database::SELECT, 'SELECT * FROM users WHERE username = :user')
   ->param(':user', 'john')->execute();
foreach($rows as $row)
   echo $row['id'].': '.$row['username'];

如果您只想要一行(据我所知,这是您的问题),请使用current()

$row = current($rows);
echo $row['username'];

请注意,Database_Result可以用作简单数组,因此可以使用current()foreach()count()和其他数组函数。

PS。这是kohana 2.3文档的link,使用DB Queries是相同的。

答案 1 :(得分:1)

看起来它正在回馈Kohana_Database_Result个对象。尝试:

$rows = $result->as_array(); 

就可以了。

http://kohanaframework.org/guide/api/Database_Result

http://kerkness.ca/wiki/doku.php?id=crud_with_the_query_builder#reading_database_records

答案 2 :(得分:0)

从未在Kohana数据库部分工作并且给出了文档缺乏示例(从我能找到的)。我找到了一个Database_Query页面。这似乎与$query->as_assoc()类似,我认为它会被使用,但不保证它会起作用。

$query = DB::query(Database::SELECT, 'SELECT * FROM users WHERE username = :user');
$query->param(':user', 'john');
$query->as_assoc();
$return = $query->execute();

仅仅根据我发现的有限信息,希望能够发挥作用。