Php Drupal/MySQL fetchAllAssoc();导致例外

Php Drupal/MySQL fetchAllAssoc();导致例外,php,mysql,drupal,drupal-7,Php,Mysql,Drupal,Drupal 7,我有一个外部数据库,我正试图从Drupal页面中访问该数据库,我已经成功地查询了该数据库并使用fetchAssoc()将数据输出到该页面,但是这只返回数据库中的第一行。我想将所有行返回到一个数组中进行处理,因此我尝试使用fetchAllAssoc(),但这会导致异常。数据库具有以下SQL字段: id, model, manufacturer, url, date_modified 我的测试代码如下: <?php db_set_active('product_db'); $query =

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

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()指定的关键字段“id”的问题,因为fetchAssoc()正确地打印值。我找到的所有文档似乎都说您传递了一个数据库字段作为键,但我也传递了一个数值,但没有成功


非常感谢你的建议,我肯定我错过了一些愚蠢的事情

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

改为使用实例var_dump:

var_dump($sqlresult);

你说得很对,这只是导致抛出异常的输出格式。非常感谢@Zaragoli。