2016-02-29 155 views
0

我有一个外部数据库,我试图从一个Drupal页面访问,我已经成功地查询数据库并使用fetchAssoc()向页面输出数据,但是这只返回数据库中的第一行。我想返回所有行到一个数组进行处理,所以我试图使用fetchAllAssoc(),但是这会导致异常。该数据库具有以下SQL字段:Drupal/MySQL fetchAllAssoc();导致异常

id, model, manufacturer, url, date_modified 

我的测试代码如下:

<?php 
db_set_active('product_db'); 
$query = db_select('product', 'p')->fields('p'); 
$sqlresults = $query->execute()->fetchAllAssoc('id'); 
foreach($sqlresults as $sqlresult) 
{ 
printf($sqlresult); 
} 
db_set_active(); 
?> 

我想,这是关键领域的“身份证”,我用fetchAllAssoc指定()这是问题,因为fetchAssoc()正确输出值。我发现的所有文档似乎都说你传递了一个数据库字段作为关键字,但我也传递了一个没有成功的数字值。

非常感谢您的任何建议,我敢肯定我只是错过了一些愚蠢的东西。

回答

0

我认为它应该以这种方式工作,但在foreach中希望将$ sqlresult变量作为字符串打印,但它是一个对象(它会导致错误)。
printf函数需要一个字符串作为第一个参数,请参阅:
http://php.net/manual/en/function.printf.php

使用例如的var_dump代替:

var_dump($sqlresult); 
+0

你说得不错,这只是抛出导致异常的输出格式。非常感谢@Zaragoli。 – Sandwich