Php 我的查询使用Drupal';s db_select仅获取一项,应获取变量

Php 我的查询使用Drupal';s db_select仅获取一项,应获取变量,php,mysql,drupal,Php,Mysql,Drupal,因此,我使用db_select查询进行Drupal查询 我试图获取最后的$I值,但我只获取最后的值。这是我的密码: $query = db_select('registration'); $result = $query ->fields('registration', array('registration_id')) ->orderBy('registration_id', 'DESC') ->range(0, $i) ->execute() ->fetchA

因此,我使用db_select查询进行Drupal查询

我试图获取最后的$I值,但我只获取最后的值。这是我的密码:

$query = db_select('registration');

$result = $query
->fields('registration', array('registration_id'))
->orderBy('registration_id', 'DESC')
->range(0, $i)
->execute()
->fetchAssoc();
注意,$i在程序的前面设置,并在我检查它时提供正确的结果。

方法只获取下一行。要获得完整的结果集,您可以像这样迭代所有结果:

$result = $query
->fields('registration', array('registration_id'))
->orderBy('registration_id', 'DESC')
->range(0, $i)
->execute();

while ($row = $result->fetchAssoc()) {
    // do something
}

但是,由于您只选择一个字段,我认为更好的获取类型可能是
fetchCol()
。如果在查询中将
fetchAssoc()
替换为
fetchCol()
$results
将等于所有结果的零索引数组。

如果要避免整个while循环,可以使用
fetchAll()
调用

$events = db_select('registration', 'r')
->fields('registration', array('registration_id'))
->orderBy('registration_id', 'DESC')
->range(0, $i)
->execute()
->fetchAll();

我希望您没有试图获取最大的注册id,然后将其递增以用作新行的id。请尝试为$i设置静态值,然后检查$i使用的实际值