2016-11-08 76 views
-1

我有一個足球網站。玩家可以得到以下結果:0,1或3(失敗,平局,勝利)Mysql select to php string

我想看看某位球員在過去3場比賽中的成績。我想補充的結果(應該是一個數與前面提到的3個可能的結果相結合)

這是我的代碼:

$result = mysql_query("SELECT * FROM events_regged WHERE result IS NOT NULL AND registrant_name='John' ORDER BY id DESC limit 3") or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 

$form = $row['result']; 
echo $form; 
if ($form == '333') {echo 'Won 3 times in a row';} 
} 

這裏的問題是,我得到了3號,而不是3倍號碼333.我想我不需要這裏的'while'聲明。

我該怎麼辦?

+0

停止使用mysql_ -functions的已被棄用... – Blueblazer172

+1

$形式= $行[ '結果'] – e4c5

+0

downvoted使用mysql_函數 –

回答

0
$result = mysql_query("SELECT * FROM events_regged WHERE result IS NOT NULL AND registrant_name='John' ORDER BY id DESC limit 3") or die(mysql_error()); 
$maxwins = 0; 
while($row = mysql_fetch_array($result)) { 
    $form = $row['result']; 
    if ($form==3) 
     $maxwins++; 
    else 
     $maxwins = 0; 
    if ($maxwins == 3) { 
     echo 'Won 3 times in a row'; 
     break; 
    } 
} 
0

你的代碼片段有幾個問題。 首先在使用=時以前的值會被覆蓋。 你需要做的是鏈接這些結果,以便滿足你的條件。

其次,您正在檢查循環中的條件。

while($row = mysql_fetch_array($result)) {  
$form .= (string) $row['result']; 
} 
if ($form == '333') {echo 'Won 3 times in a row';} 

有許多這樣做的方法,解決上述需要你的片斷的最小修改。

Btw。 mysql_*已貶值一段時間了。看看PDO

0

這個查詢將返回三行:

SELECT * 
FROM events_regged 
WHERE result IS NOT NULL AND registrant_name = 'John' 
ORDER BY id DESC 
LIMIT 3; 

如果你想在一列中的值,然後使用聚集。

這裏有一個方法:

SELECT GROUP_CONCAT(result ORDER BY id DESC) as results 
FROM (SELECT * 
     FROM events_regged 
     WHERE result IS NOT NULL AND registrant_name = 'John' 
     ORDER BY id DESC 
     LIMIT 3 
    ) e 
0

謝謝e4c5的答案。 這解決了這一問題:

$form .= $row['result'] 
+0

這更好: - '$ form =''; while($ row = mysql_fetch_array($ result)){$ form。= $ row ['result']; }每次執行'echo $ form;'和'if($ form =='333'){echo'Won'連續3次';}'不需要。放在外面 –