如何获得左边加入mySQL表的id?

时间:2017-04-06 15:29:07

标签: php mysql

像这样我的mySQL请求运行良好:

 <?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"];
        }
        ?>

但是,如果我想得到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"];
        }
        ?>

......有一个错误:

  

致命错误:未捕获PDOException:SQLSTATE [42000]:语法错误或   访问冲突:1064您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   语法使用附近&#39; dog.id AS d FROM dog LEFT JOIN cat ON   dog.name = cat.name&#39;在/myproject.php:31的第3行堆栈跟踪:#0   /myproject.php(31):PDOStatement-&gt;执行(数组)#1 {main}抛出   第31行的/myproject.php

2 个答案:

答案 0 :(得分:1)

根据您的数据和错误消息,horse.id AS h之后您的查询中错过了一个逗号

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 :(得分:0)

你错过了一个逗号:

    SELECT *,
    horse.id AS h  -- HERE
    dog.id AS d

应该是:

    SELECT *,
    horse.id AS h,
    dog.id AS d