【发布时间】:2020-07-31 15:07:24
【问题描述】:
我正在尝试使用 PDO 在 PHP 中运行查询。 该查询在顶部有一些变量来确定排名,除了在 $sql 中使用 SET @var 时,它返回一个空行集。但是,如果我删除有问题的 SQL,它会返回正常。
我不想在我的脚本中返回 @prev_value、@rank_count 或 @rank_increasing,只返回它在 SELECT 中创建的排名。
你能告诉我我做错了什么吗?
谢谢
$sql = "
SET @prev_value = NULL;
SET @rank_count = 0;
SET @rank_increasing = 0;
SELECT a.*
, @rank_increasing := @rank_increasing + 1 AS row_num
, CASE
WHEN @prev_value = score
THEN @rank_count
WHEN @prev_value := score
THEN @rank_count := @rank_increasing
END AS rank
FROM (
-- INLINE VIEW --
) a
";
try {
$sth = $dbh->prepare($sql);
$sth->execute(array($var1, $var2));
return $sth->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
return $e;
}
【问题讨论】:
标签: php mysql sql variables pdo