php和mysql的问题

时间:2012-11-20 14:37:58

标签: php mysql

从以下条件检索数据时遇到问题:

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进行一次左连接,它可以正常工作。

3 个答案:

答案 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`