PHP和MySQL:我如何使用"SET @ rank = 0;" 在$ query =

Lax*_*idi 7 php mysql select

在我的PHP文件中,我使用此行从mySQL数据库中提取数据:

$query = "SET @rank=0; SELECT @rank:=@rank +1 as rank, Blah Blah...";
Run Code Online (Sandbox Code Playgroud)

如果我在phpMyAdmin的SQL窗口中检查SELECT语句(没有$ query =),它可以正常工作.

但是,如果我在PHP中使用它,那么我会收到错误.它不喜欢"SET @ rank = 0;" 位.有没有办法使用"SET @ rank = 0;" 当它在"$ query ="时?有解决方法吗?

其余代码是从数据库中提取数据的标准内容:

public function getmyData() {


 $mysql = mysql_connect(connection stuff);

 $query = "SELECT @rank:=@rank +1 as rank, formatted_school_name,  blah blah";

 $result = mysql_query($query);

            $ret = array();
                 while ($row = mysql_fetch_object($result)) {
                    $tmp = new VOmyData1();
                    $tmp->stuff1 = $row-> stuff1;
                    $tmp->stuff2 = $row->stuff2;

                    $ret[] = $tmp; 
                        }
                 mysql_free_result($result);

                 return $ret;

    }   
Run Code Online (Sandbox Code Playgroud)

更新:我正在尝试使用Amerb的使用多查询的建议.我像这样连接了查询:

$query = "SET @rank = 0";

$query .= "SELECT @rank:=@rank +1 as rank...
Run Code Online (Sandbox Code Playgroud)

我将结果更改为:

$result = $mysqli_multi_query($query);
Run Code Online (Sandbox Code Playgroud)

但是,由于某种原因它失败了.我在运行PHP 5.2的机器上.有什么建议?

Mar*_*rvo 9

这个人似乎有办法将同一个查询中的变量设置为零.不过,我没有在这台机器上设置MySQL来尝试它.

以下是他在博客文章中建议的查询:

select @rownum:=@rownum+1 ‘rank’, p.* from player p, (SELECT @rownum:=0) r order by score desc limit 10;
Run Code Online (Sandbox Code Playgroud)

(是否有一些与计算等级有关的家庭作业?这是我在两天内看到的第三个问题.)

你在检查重复的分数吗?