2016-11-08 80 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次';}'不需要。放在外面 –