在我的PHP文件中,我使用此行从mySQL数据库中提取数据:
$query = "SET @rank=0; SELECT @rank:=@rank +1 as rank, Blah Blah...";
如果我在phpMyAdmin的SQL窗口中检查SELECT语句(没有$ query =),它可以正常工作。
但是,如果我在PHP中使用它,那么我会收到错误。它不喜欢“SET @ rank = 0;”位。有没有办法使用“SET @ rank = 0;”当它在“$ query =”时?有解决方法吗?
其余代码是从db中提取数据的标准内容:
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;
}
更新:我正在尝试使用Amerb建议使用多查询。我像这样连接了查询:
$query = "SET @rank = 0";
$query .= "SELECT @rank:=@rank +1 as rank...
我将结果更改为:
$result = $mysqli_multi_query($query);
但是,由于某种原因,它失败了。我在运行PHP 5.2的机器上。有什么建议?
答案 0 :(得分:7)
This guy here似乎有办法将同一查询中的变量设置为零。不过,我没有在这台机器上设置MySQL来尝试它。
以下是他在博客文章中建议的问题:
select @rownum:=@rownum+1 ‘rank’, p.* from player p, (SELECT @rownum:=0) r order by score desc limit 10;
(是否有一些与计算等级有关的家庭作业?这是我在两天内看到的第三个问题。)
你要检查重复的分数吗?
答案 1 :(得分:2)
您必须在一个中启用多个查询,但我忘记了目前是如何做到这一点的。这是一个安全功能。
答案 2 :(得分:2)
尝试将其作为2个单独的连续查询执行。