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;
    }

Antworten auf die Frage(1)

Ihre Antwort auf die Frage