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,不客气。如果你不介意的话,请你也投票支持我的答案好吗?谢谢^_^