php - 连接 2 个表的 PDO Sql 查询返回一行

标签 php mysql sql pdo inner-join

我正在尝试制作一个下拉菜单。菜单正在从 mysql 表中获取值。 我使用 2 个表,第一个用于主菜单项,第二个是页面并与菜单中的父类别嵌套。所以我的菜单必须是这样的;

<ul>
<li>MAIN MENU - 1 <!-- from menu table -->
   <ul>
       <li>SUB MENU - 1 - 1</li><!-- from sayfalar table -->
   </ul>
</li>
<li>MAIN MENU - 2 <!-- from menu table -->
   <ul>
       <li>SUB MENU - 2-1</li><!-- from sayfalar table -->
   </ul>
</li>
</ul>

我的 mysql 数据库中有 2 个表,名为:'menu'=parent 和 'sayfalar'=children。

sayfalar表结构:

sayfa_id | sayfa_foto | sayfa_ad_dil1 | sayfa_ad_dil2 | sayfa_detay_dil1 | sayfa_detay_dil2 | ust_menu_id
---------------------------------------------------------------------------------------------------------
1        | NULL       | HAKKIMIZDA    | ABOUT US      | DENEME           | LOREM IPSUM      | 2
---------------------------------------------------------------------------------------------------------

菜单表结构

menu_id | menu_ad_dil1 | menu_ad_dil2 | menu_order
--------------------------------------------------
1       | ANASAYFA     | HOMEPAGE     | 1
--------------------------------------------------
2       | KURUMSAL     | CORPORATE    | 2
--------------------------------------------------
3       | BLA BLA      | BLA BLA      | 3
--------------------------------------------------
4       | LOREM        | IPSUM        | 4
--------------------------------------------------
5       | İLETİŞİM     | CONTACT      | 5
--------------------------------------------------

使用 PDO 的 mysql 查询看起来像;

<?php
// PDO Sorgu Hazırla
$query = $db->prepare
('SELECT menu.*, sayfalar.ust_menu_id, sayfalar.sayfa_id
    FROM menu
    INNER JOIN sayfalar
ON menu.menu_id = sayfalar.ust_menu_id ORDER BY `menu`.`menu_order` ASC');
// PDO Sorguyu Çalıştır
$query->execute();
?>

并像下面一样回显;

<?php
while ($row = $query->fetch(PDO::FETCH_OBJ))
    {
    echo '<li class="pi"><a href="link.php?i='.$row->menu_id.'"><span>'.$row->menu_ad_dil2.'</span></a>';
        echo '<ul class="pi-submenu pi-has-border pi-items-have-borders pi-has-shadow pi-submenu-dark">';
            echo '<li class="pi"><a href="urun-detay.php?i='.$row->sayfa_id.'"><span>'.$row->menu_ad_dil2.'</span></a></li>';
        echo '</ul>';
    echo '</li>';
    }
?>

不幸的是,它只返回 1 行。我的菜单表中有 5 个父菜单项,如上所示。任何帮助都会非常有用。

最佳答案

试试这个

<?php
// PDO Sorgu Hazırla
$query = $db->prepare
('SELECT distinct menu.*, sayfalar.ust_menu_id, sayfalar.sayfa_id
    FROM menu
    LEFT OUTER JOIN sayfalar
ON menu.menu_id = sayfalar.ust_menu_id ORDER BY `menu`.`menu_order` ASC');
// PDO Sorguyu Çalıştır
$query->execute();
?>

关于php - 连接 2 个表的 PDO Sql 查询返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085038/

相关文章:

mysql - 如何查询MySQL中每一行的序数索引

php - WordPress 自定义 nav walker 检查项目是否有子菜单

php - 单独行中的mysql行

PHP PDO UPDATE MySQL 多个表

php - MySql 在其他表中获取总和 : one table contains values, 是其余数据

mysql - 如何查询多次,最后关闭连接?

php - 为什么我的 PHP 代码有时会在 MySQL 数据库中创建多行?

php - 困境,在没有其他信息已知的情况下搜索散列字段

python - 用于更新表的 SQLAlchemy 自定义约束

mysql - 按小时汇总行(包括空闲时间)?