如何在sql命令中使用当前用户名

时间:2015-01-23 12:03:42

标签: php mysql drupal

我正在尝试从数据库中获取一些数据。我需要数据库中的名称特定数据。如何返回当前的Drupal用户名并在WHERE语句中使用它 错误消息是

error:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'admin' in 'where clause'.

我目前的代码是

global $user;
$cuname = $user->name;

$grid = new jqGridRender($conn);
$grid->SelectCommand = "SELECT uid,name,created,company_id FROM users WHERE company_id = (SELECT company_id FROM users WHERE name = $cuname)";

3 个答案:

答案 0 :(得分:0)

你需要在stirngs周围加上引号。

SELECT company_id FROM users WHERE name = '$cuname'
                     here-----------------^-------^

否则数据库中的内容你的意思是列名。顺便说一下,你应该考虑使用 Prepared Statements 来避免这种错误和SQL注入。

答案 1 :(得分:0)

不要写你的SQL查询 - 这样做" drupal方式"。使用视图模块:

https://www.drupal.org/project/views

答案 2 :(得分:0)

我认为您应该使用db_select(https://api.drupal.org/api/drupal/includes!database!database.inc/function/db_select/7)或db_query(https://api.drupal.org/api/drupal/includes!database!database.inc/function/db_query/7

db_select的示例:

<?php
global $user;

$select = db_select('users', 'u'); 
$select->fields('u', array('uid', 'name'));
$select->condition('user', $user->name);

$result = $select->execute()->fetchAssoc();
?>