douyan8267 2017-04-06 15:29
浏览 43
已采纳

如何获取左连接mySQL表的id? [关闭]

Like this my mySQL request is working well:

 <?php
       $id = 12;

        $pdo = $db->prepare("
        SELECT *,
        horse.id AS h
        FROM dog 
        LEFT JOIN cat ON dog.name=cat.name
        LEFT JOIN horse ON dog.name=horse.name
        WHERE animal = ?");
        $pdo->execute(array($id));
        $animals = $pdo->fetchAll();

        foreach ($animals as $row) {
            echo $row["h"];
        }
        ?>

But if I want to get the dog.id...

 <?php

        $id = 12;

        $pdo = $db->prepare("
        SELECT *,
        horse.id AS h
        dog.id AS d
        FROM dog 
        LEFT JOIN cat ON dog.name=cat.name
        LEFT JOIN horse ON dog.name=horse.name
        WHERE animal = ?");
        $pdo->execute(array($id));
        $animals = $pdo->fetchAll();

        foreach ($animals as $row) {
            echo $row["h"];
            echo $row["d"];
        }
        ?>

...there is an error:

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dog.id AS d FROM dog LEFT JOIN cat ON dog.name=cat.name' at line 3 in /myproject.php:31 Stack trace: #0 /myproject.php(31): PDOStatement->execute(Array) #1 {main} thrown in /myproject.php on line 31

  • 写回答

2条回答 默认 最新

  • donglu2523 2017-04-06 15:34
    关注

    Based on your data and your error message, you missed one comma in your query after horse.id AS h it should be

    SELECT *,
     horse.id AS h,
     dog.id AS d
    FROM dog 
    LEFT JOIN cat ON dog.name=cat.name
    LEFT JOIN horse ON dog.name=horse.name
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图