Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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 联接表不返回任何结果_Php_Sql_Join - Fatal编程技术网

Php 联接表不返回任何结果

Php 联接表不返回任何结果,php,sql,join,Php,Sql,Join,我在代码的另一部分成功地连接了表,所以我遵循了相同的模式,但这次它没有返回任何结果,我不明白为什么 以下是我尝试加入的表: -角色 | id | type | +----+--------+ | 1 | admin | | 2 | author | | 3 | member | +----+--------+ +----+----------+-------+----------+-------------------+--------+ | id | username | ema

我在代码的另一部分成功地连接了表,所以我遵循了相同的模式,但这次它没有返回任何结果,我不明白为什么

以下是我尝试加入的表:

-角色

| id |  type  |
+----+--------+
|  1 | admin  |
|  2 | author |
|  3 | member |
+----+--------+
+----+----------+-------+----------+-------------------+--------+
| id | username | email | password |      role_id      | status |
+----+----------+-------+----------+-------------------+--------+
|    |          |       |          | 3 (default value) |        |
+----+----------+-------+----------+-------------------+--------+

-用户

| id |  type  |
+----+--------+
|  1 | admin  |
|  2 | author |
|  3 | member |
+----+--------+
+----+----------+-------+----------+-------------------+--------+
| id | username | email | password |      role_id      | status |
+----+----------+-------+----------+-------------------+--------+
|    |          |       |          | 3 (default value) |        |
+----+----------+-------+----------+-------------------+--------+
以下是请求:

public function get_users()
{
    $users_list = $this->dbh->query('SELECT users.id, roles.id AS roleid, type, role_id, id, username FROM users LEFT JOIN roles ON users.role_id = roles.id ORDER BY id ASC');
    return $users_list;
} 
SQL应该是

SELECT  
    u.id, 
    r.id AS roleid, 
    u.type,
    r.username
FROM users u
    LEFT JOIN roles r ON r.id = u.role_id
ORDER BY u.id ASC 
我省略了sql中定义的一些列,因为我根本看不出它们的意义。不仅如此,它们可能看起来模棱两可

例如:

SELECT 
    users.id,             // User ID
    roles.id AS roleid,   // Role ID
    type,                 // User type
    role_id,              // Role ID (We already have it, no need for it again)
    id,                   // What ID? This is ambiguous and will fail 
    username              // User Username

由于这两个表都有id列,因此需要指定
.id

public function get_users()
{
    $users_list = $this->dbh->query('SELECT users.id AS userid, roles.id AS roleid, type, role_id, username FROM users LEFT JOIN roles ON users.role_id = roles.id ORDER BY users.id ASC');
    return $users_list;
} 
像这样试试

public function get_users()
    {
        $users_list = $this->dbh->query('SELECT u.id AS userid, r.id AS roleid, r.type, u.role_id, u.username FROM users as u LEFT JOIN roles as r ON u.role_id = r.id ORDER BY u.id ASC');
        return $users_list;
    } 

尝试:
$users\u list=$this->dbh->query('SELECT*FROM users AS users LEFT JOIN roles AS roles ON users.id=roles.id ORDER BY id ASC')它仍然没有显示任何结果。下面是我遵循的模式
从表1中选择列名称左连接表2在表1上。列名称=表2。列名称但我猜我输入了一些错误的内容,我会检查againI是否尝试了您的解决方案,但它仍然返回一个空白页。我理解您对模棱两可的列的意思,我将对此进行返工first@CharlèneC从联接中的多个表中进行选择时,您应该始终使用表为所需的列添加前缀,因为这样可以避免此问题。不仅如此,您还可以确切地知道数据来自于哪个表更改了什么?答案是什么?对不起,我出人意料地离开了。你的解决方案有效!谢谢你的帮助,我以后会记住这一点。@CharlèneC,不客气。如果你不介意的话,请你也投票支持我的答案好吗?谢谢^_^