如果我有这个代码(来自他们的文档)
$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();
这些都不起作用。我错过了什么?
答案 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();
仅仅根据我发现的有限信息,希望能够发挥作用。