像这样我的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
答案 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