Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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
Alias与MySQL和PHP中的Join_Php_Mysql_Join - Fatal编程技术网

Alias与MySQL和PHP中的Join

Alias与MySQL和PHP中的Join,php,mysql,join,Php,Mysql,Join,我正在开发一个简单的ACL模块,在多对多关系方面遇到了一些问题 我有三张桌子: 团体 *id_组 名字 权限 *许可证 名字 重新许可组 *身份关系 团体 许可 所以我有这个疑问 SELECT * FROM acl_groups LEFT OUTER JOIN acl_RelPermissionsGroup ON acl_groups.id_group = acl_RelPermissionsGroup.group LEFT OUTER JOIN acl_permissio

我正在开发一个简单的ACL模块,在多对多关系方面遇到了一些问题

我有三张桌子:

团体

  • *id_组
  • 名字
权限

  • *许可证
  • 名字
重新许可组

  • *身份关系
  • 团体
  • 许可
所以我有这个疑问

SELECT * FROM acl_groups 
LEFT OUTER JOIN acl_RelPermissionsGroup 
  ON acl_groups.id_group = acl_RelPermissionsGroup.group 
LEFT OUTER JOIN acl_permissions 
  ON acl_permissions.id_permission = acl_RelPermissionsGroup.permission 
WHERE id_group > 0
如果我在phpmyadmin中执行查询,它会显示良好。因此,它会显示所有组是否具有权限,如果它们具有权限,它也会显示它们

我在这里看到一个问题,那就是name属性被重复。如何为每个字段设置别名? 但这不是问题所在

问题是,除了没有任何权限的组之外,执行mysqli_fetch_assoc执行得很好。这就是输出:

    Array ( 
[id_group] => 2 
[name] => 
[id_relation] => 
[group] => 
[permission] => 
[id_permission] => 
)
组ID很好,但由于字段是重复的,它会覆盖这些字段。此外,id_组和id_权限似乎分别与组和权限重复


我该怎么办?

您应该写“选择groups.id\u group\u id,groups.name作为group\u name…”

您必须明确地命名字段,如下所示

SELECT
  ag.name as group_name
  ,ap.name as permission_name
  ,ar.`group` as permission_group_id 
FROM acl_groups ag 
LEFT OUTER JOIN acl_RelPermissionsGroup ar ON ag.id_group = ar.`group` 
LEFT OUTER JOIN acl_permissions ap ON ap.id_permission = ar.permission 
WHERE id_group > 0

不要忘记,
group
是一个保留字,需要像这样在backticks
`group`
中引用。

它可以工作!我可以选择显示多少字段。谢谢:D