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


how to use current username in sql command

我正在尝试从数据库中获取一些数据。我需要数据库中的名称特定数据。如何返回当前的 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)";
你需要在

镫子周围加上引号。

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

否则,数据库的东西你的意思是列名。顺便说一句,您应该考虑使用预准备语句来避免此类错误和SQL注入。

不要编写你的sql查询 - 以"drupal方式"做。使用视图模块:

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

我认为你应该使用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();
?>