Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php和mysql的问题_Php_Mysql - Fatal编程技术网

php和mysql的问题

php和mysql的问题,php,mysql,Php,Mysql,从以下条件检索数据时出现问题: 表用户(id、用户名、名、姓、用户类型、状态) 表用户类型(代码、说明) 表状态\u类型(id,说明) 然后我使用以下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 J

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

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

用户类型(代码、说明)

状态\u类型(id,说明)

然后我使用以下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进行一次左连接,效果很好。

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

SELECT u.id, uid, ...
或者(更有可能):


如果你把这个放在你的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/>";

好的,看起来您已经纠正了状态类型/用户状态问题。还有这些吗

在您的查询中,您还有:

FROM users u
在原始描述中,您再次表示表名为user而不是users

还有更多的打字错误:

LEFT JOIN status_type t ON u.status = t.code
LEFT JOIN user_type w ON u.user_type = w.id
用户类型的代码不是id,状态类型的id不是代码,应为:

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

您能否显示执行sql语句和检索数据的实际代码?请包括您的php代码。如果它在控制台上工作,那么问题不在查询中,而是在PHP上,可能在phpit中没有正确地用引号括起来,因为您的PHP中可能存在一些错误。是什么时候?试着运行
SELECT 1,'bsmith','Smith','Bob','guest','user\u type','type\u desc'
只是为了测试,我想问题是因为我的两个表具有相同的属性名“desription”。当我只取出“t.description status_desc”或“w.description type_desc”而不接触任何其他代码时,它工作正常。
as
不需要别名。我总是把它包括在内,所以很明显,但这不是必要的嘿-谢谢你,马克!我没有意识到这一点。据我所知,SQL-92标准规定使用“As”-你知道我的理解是否错误吗?或者MySQL只是对该语言进行了扩展并允许空白?就我在实际规范中所见,这是可选的。postgres需要它。如果你把它放在php文件的顶部:error_reporting(E_ALL);ini设置(“显示错误”,1)$sql=“从{$tblprefix}用户u左加入{$tblprefix}状态{t.status=t.code左加入{$tblprefix}用户u左加入{$tblprefix}状态{t.status=t.code左加入{$tblprefix}用户u-type-ON-u.user\u-type=ut.id,其中1;”$query=mysql\u query($sql)$用户列表=数组()$总项目=0;而($user\u table=mysql\u fetch\u array($query)){$user\u list[]=$user\u table;}是否定义了{$tblPrefix}?为什么要在查询中输入?如果我删除t.description status\u desc或w.description type\u desc,代码可以正常工作。但是当我同时删除了这两个选项时,它不会返回任何结果。感谢您指出我有这么多的拼写错误。但是user_type和status_type都是表。是的,我知道修复加入表的方式解决了问题,还是在输入信息时出现了拼写错误?表名是“user”还是“users”?不要担心拼写错误。在上面的select语句中,如果我删除t.description status\u desc或w.description type\u desc,它可以正常工作。但是当我同时删除这两个语句时,它不会返回任何结果。
$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`
FROM users u
LEFT JOIN status_type t ON u.status = t.code
LEFT JOIN user_type w ON u.user_type = w.id
LEFT JOIN status_type t ON u.status = t.id
LEFT JOIN user_type w ON u.user_type = w.code