2

从以下条件检索数据时出现问题:

用户(id、用户名、名字、姓氏、用户类型、状态);

----------------------------------
|1 | bsmith | Bob | Smith | 1 | 1|
----------------------------------

USER_TYPE(代码、描述)

-----------
|1 | admin|
|2 | guest|
-----------

STATUS_TYPE(id,描述)

-------------
|1 | active |
|2 | suspend|
-------------

然后我使用以下 SQL 查询:

$sql = "SELECT u.id uid, username, last_name, first_name,
      status, t.description status_desc, user_type, w.description type_desc  
      FROM users u 
      LEFT JOIN status_type t ON u.status = t.id
      LEFT JOIN user_type w ON u.user_type = w.code
      ";

当我执行上述 sql 语句时,它不会通过 PHP 返回任何数据。但它适用于 mySQL 命令行客户端。

此外,如果我只使用 PHP 进行左连接,它工作正常。

4

3 回答 3

1

好的,您似乎更正了 status_type / user_status 问题。还有这些

同样在您的查询中,您有:

FROM users u

再次在原始描述中说表名是用户而不是用户。

还有更多错别字:

LEFT JOIN status_type t ON u.status = t.code
LEFT JOIN user_type w ON u.user_type = w.id

user_type 的 code 不是 id,status_type 的 id 不是 code,应该是:

LEFT JOIN status_type t ON u.status = t.id
LEFT JOIN user_type w ON u.user_type = w.code
于 2012-11-20T15:32:20.730 回答
0

您要么在“u.id”之后缺少逗号,要么在 u.id 之后缺少 AS:

SELECT u.id, uid, ...

或(更有可能):

SELECT u.id AS uid, ...
于 2012-11-20T15:27:46.193 回答
0

如果你把它放在你的 PHP 文件中并把输出放在这里怎么办:

$sql = ''; //USE THE STRING IN YOU'RE POST ABOVE
$query = mysql_query($sql); 
$result = mysql_fetch_object($query); 

echo '----' . "<br/>";
echo 'the result:' . "<br/>";  
print_r($result, true) . "<br/>"; 
echo '----' . "<br/>";
echo 'the error' . "<br/>";
echo mysql_error() . "<br/>"; 
echo '-----' . "<br/>";

你可以用这个替换你自己的查询(不要忘记评论它):

SELECT
     `user`.`id` AS 'uid',
     `user`.`username`, 
     `user`.`last_name`,
     `user`.`first_name`,
     `user`.`status`,
     `user`.`user_type` AS 'type',
     `status_type`.`desciption` AS 'type_desc',
     `user_type`.`description` AS 'status_desc'
FROM `users` 
LEFT JOIN `status_type` ON `status_type`.`id` = `user`.`status`
LEFT JOIN `user_type` ON `user_type`.`code` = `user`.`user_type`
于 2012-11-20T15:31:59.943 回答