我正在尝试将变量填充到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;
}
答案 0 :(得分:1)
你可以尝试:
$uid = arg(1);
$result = db_result(db_query("SELECT account FROM {users} WHERE uid = %d", $uid));
答案 1 :(得分:1)
要避免sql-injection,您应该使用占位符(有关详细信息,请参阅db_query):
$result = db_query("SELECT * FROM {users} WHERE uid = %d", arg(1));
另请注意,db_result适用于单列单结果查询。您可能想要使用db_fetch_object。此外,users表中没有名为account的列。
答案 2 :(得分:1)
function accountselect_getclientaccount() {
return (arg(0) == 'user') ? db_result(db_query('SELECT account FROM {users} WHERE uid = %d', arg(1))) : FALSE;
}
我不知道你为什么要使用全球$用户。也许你应该使用$ user-> uid而不是arg(1)?这将节省您检查arg(1)实际上是一个用户ID。
这可能会更好:
function accountselect_getclientaccount($account) {
return db_result(db_query('SELECT account FROM {users} WHERE uid = %d', $account->uid));
}
另外:查看用户钩子。最好在加载操作中返回'account'col(如果你还没有这样做)