[英]PHP & MySQL: How can I use "SET @rank=0;" in $query=
在我的 PHP 文件中,我使用此行從我的 mySQL 數據庫中提取數據:
$query = "SET @rank=0; SELECT @rank:=@rank +1 as rank, Blah Blah...";
如果我在 phpMyAdmin 的 SQL window(沒有 $query= )中檢查 SELECT 語句,它工作正常。
但是,如果我在 PHP 中使用它,則會出現錯誤。 它不喜歡“SET @rank=0;” 少量。 有沒有辦法使用“SET @rank=0;” 當它在“$query=”中時? 有解決方法嗎?
代碼的 rest 是從數據庫中提取數據的標准內容:
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 的機器上。 有什么建議么?
這個人似乎有辦法將同一個查詢中的變量設置為零。 不過,我沒有在這台機器上設置MySQL來嘗試它。
以下是他在博客文章中建議的查詢:
select @rownum:=@rownum+1 ‘rank’, p.* from player p, (SELECT @rownum:=0) r order by score desc limit 10;
(是否有一些與計算等級有關的家庭作業?這是我在兩天內看到的第三個問題。)
你在檢查重復的分數嗎?
您必須在一個中啟用多個查詢,但我忘記了目前是如何做到這一點的。 這是一個安全功能。
嘗試將其作為2個單獨的連續查詢執行。
使用 mysql_multi_query() 或 mysqli_multi_query() 而不是 mysql_query()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.