0

我有一个查询将我所有的 drupal 用户都拉到一个 stdClass_object 中,但是除了使用print_r. 我想将它们放入下拉列表中,但是无法使其正常工作。

stdClass Object ( [uid] => 0 [users_name] => )作为输出的数组示例

$result = db_query('SELECT users.uid AS uid,   users.name AS users_name FROM users users');
 $result_array = is_array($result);

 while ($existing_user = db_fetch_object($result)) {
 print_r($existing_user); // or do whatever
}

foreach ($existing_user->uid as $message) {
echo $message->users_name;

 }
4

1 回答 1

0

您不应使用pg_fetch_array()或任何其他特定于数据库类型的函数。

相反,只需使用 Drupal 的数据库功能,它就会自动调整查询。

这是应该为您工作的代码:

function MYMODULE_get_users() {
  $users = array();
  $results = db_query("SELECT uid, name FROM {users}");
  foreach ($results as $user) {
    $users[$user->uid] = $user->name;
  }

  return $users;
}

以下是您将如何使用此代码:

<select name="uid">
<?php foreach (MYMODULE_get_users() as $user): ?>
  <option value="<?php print $user->uid; ?>"><?php print $user->name; ?></option>
<?php endforeach; ?>
</select>

但是,您应该使用 Drupal 的 Form API 来构建表单。它将为您处理许多事情,包括开箱即用的验证和提交处理。

查看这篇文章了解更多信息。另外,查看示例模块的源代码,特别是与表单 API 相关的示例。

于 2013-10-23T13:15:45.810 回答