簡體   English   中英

PHP & MySQL:如何使用“SET @rank=0;” 在 $查詢=

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM