SQL sorgusu bir Drupal değişkeni kullanarak

3 Cevap php

Ben bir sayfa için bir değer döndürmek için bir SQL sorgusu içine bir değişken şeyler çalışıyorum.

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

Arg (1) kullanıcıyı = nerede şu anda görüntülenen. Ben sayfanın üst kısmında (1) arg çıktısı ediyorum, bu yüzden orada olduğunu biliyorum, ama Drupal almak istiyorum görünmüyor. Ben birkaç farklı şekilde kaçan denedim. Aşağıda tam kodudur

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

3 Cevap

Eğer deneyebilirsiniz:

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

Önlemek için sql-injection, sen (db_query daha fazla bilgi için bakınız) tutucuları kullanmalısınız:

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

Ayrıca db_result tek sütun, tek sonuç sorguları içindir unutmayın. Muhtemelen db_fetch_object kullanmak istiyorum. Ayrıca, hesap denilen kullanıcıların tablosunda bir sütun değildir.

function accountselect_getclientaccount() {
  return (arg(0) == 'user') ? db_result(db_query('SELECT account FROM {users} WHERE uid = %d', arg(1))) : FALSE;
  }

Eğer global $ kullanıcı kullanarak konum neden bilmiyorum. Belki $ user-> uid yerine arg (1) kullanarak olmalıdır? Bu (1) aslında bir kullanıcı kimliği arg kontrol sizi kurtaracaktır.

Bu daha iyi olabilir:

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

Ayrıca: kullanıcı kanca bakın. (Eğer zaten yapıyor değilseniz) yük operasyon 'hesap' col dönmek için en iyi uygulama olabilir

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