Использование переменной Drupal в запросе SQL - PullRequest
1 голос
/ 17 декабря 2009

Я пытаюсь вставить переменную в запрос SQL, чтобы вернуть значение на страницу.

$sql = 'SELECT account FROM users WHERE uid = arg(1)';

Где arg (1) = пользователь, просматриваемый в данный момент. Я вывожу arg (1) вверху страницы, так что я знаю, что он есть, но Drupal, похоже, не хочет его принимать. Я пытался избежать нескольких разных способов. Ниже приведен полный код

  function accountselect_getclientaccount() {
      global $user;
      $sql = 'SELECT account FROM users WHERE uid = arg(1)';
      $result = db_result(db_query($sql));
    return $result;
  }

Ответы [ 3 ]

1 голос
/ 17 декабря 2009

Чтобы избежать sql-инъекций , вы должны использовать заполнители (см. db_query для получения дополнительной информации):

$result = db_query("SELECT * FROM {users} WHERE uid = %d", arg(1));

Также обратите внимание, что db_result предназначен для запросов с одним столбцом и одним результатом. Вы, вероятно, хотите использовать db_fetch_object. Кроме того, в таблице пользователей нет столбца с именем account.

1 голос
/ 17 декабря 2009
function accountselect_getclientaccount() {
  return (arg(0) == 'user') ? db_result(db_query('SELECT account FROM {users} WHERE uid = %d', arg(1))) : FALSE;
  }

Я не знаю, почему вы используете глобальный $ user. Может быть, вы должны использовать $ user-> uid вместо arg (1)? Это избавит вас от проверки, что arg (1) - это фактически идентификатор пользователя.

Это может быть лучше:

function accountselect_getclientaccount($account) {
  return db_result(db_query('SELECT account FROM {users} WHERE uid = %d', $account->uid));
  }

Также: см. Пользовательский хук. Лучше всего возвращать столбец account в операции загрузки (если вы этого еще не сделали)

http://api.drupal.org/api/function/hook_user/6

1 голос
/ 17 декабря 2009

Вы можете попробовать:

$uid = arg(1);
$result = db_result(db_query("SELECT account FROM {users} WHERE uid = %d", $uid));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...