PHP PDO - Verwenden von MySQL-Variablen
Ich versuche, eine Abfrage in PHP mit PDO auszuführen. Die Abfrage hat oben einige Variablen, um einen Rang zu bestimmen, außer wenn SET @var im $ sql verwendet wird, wird ein leeres Rowset zurückgegeben. Wenn ich jedoch das fehlerhafte SQL entferne, wird es in Ordnung zurückgegeben.
Ich möchte in meinem Skript nicht @prev_value, @rank_count oder @rank_increasing zurückgeben, sondern nur den Rang, den es in SELECT erstellt.
Können Sie mir bitte mitteilen, was ich falsch mache?
Vielen Dank
$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;
}