Php PDO fetch提供一般错误子查询
我有一个带有子查询的查询,用于根据tune_值获取每行的排名。如果我试图获取结果,我将从PDOStatement::fetchAll();;中获得一个常规错误;。prepare语句的execute似乎没有抛出任何错误 我有以下疑问Php PDO fetch提供一般错误子查询,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我有一个带有子查询的查询,用于根据tune_值获取每行的排名。如果我试图获取结果,我将从PDOStatement::fetchAll();;中获得一个常规错误;。prepare语句的execute似乎没有抛出任何错误 我有以下疑问 SET @rank := 0; SELECT * FROM ( SELECT *, (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(tunes.creation_date)) as age, @
SET @rank := 0;
SELECT * FROM
(
SELECT *,
(UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(tunes.creation_date)) as age,
@rank := @rank + 1 as rank
FROM tunes
ORDER BY tune_value DESC
) as t
LEFT JOIN artists ON artists.id = t.artists_id
ORDER BY age
我使用以下简化的php代码准备语句
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $pdo->prepare($sql);
$stmt->execute();
$stmt->fetchAll(\PDO::FETCH_ASSOC);
用php做这个子查询是不可能的吗?我在考虑是否可以查看子查询
编辑:为了澄清查询在phpmyadmin中工作正常,PDO不支持一次调用中的多个查询。
(意味着PDO支持子查询,只是它不支持用分号分隔的多个查询)
你必须一个接一个地给他们打电话。
要从PDO中获取错误,请设置此属性
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
编辑:这意味着
设置@rank:=0
是一个单独的查询,应该在单独的调用中查询尝试将表名添加到artist\u id
,以便t.artist\u id
。我也相信你不能在子查询中真正订购。可能想检查一下。我仍然有标记,它只提供一般错误信息。如果PDO不支持它,您会建议在子查询之外创建一个视图吗?