Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO fetch提供一般错误子查询_Php_Mysql_Database_Pdo - Fatal编程技术网

Php PDO fetch提供一般错误子查询

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, @

我有一个带有子查询的查询,用于根据tune_值获取每行的排名。如果我试图获取结果,我将从PDOStatement::fetchAll();;中获得一个常规错误;。prepare语句的execute似乎没有抛出任何错误

我有以下疑问

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不支持它,您会建议在子查询之外创建一个视图吗?