从以下条件检索数据时遇到问题:
表 USERS (id,username,first_name,last_name,user_type,status);
----------------------------------
|1 | bsmith | Bob | Smith | 1 | 1|
----------------------------------
表 USER_TYPE (代码,说明)
-----------
|1 | admin|
|2 | guest|
-----------
表 STATUS_TYPE (id,description)
-------------
|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进行一次左连接,它可以正常工作。
答案 0 :(得分: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的代码不是id,而status_type的id不是代码,应该是:
LEFT JOIN status_type t ON u.status = t.id
LEFT JOIN user_type w ON u.user_type = w.code
答案 1 :(得分:0)
你在“u.id”之后错过了一个逗号,或者你在u.id之后缺少一个AS:
SELECT u.id, uid, ...
或(更有可能):
SELECT u.id AS uid, ...
答案 2 :(得分: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`