繁体   English   中英

MYSQL在PHP中返回空结果

[英]MYSQL returns empty result in PHP

我有下表国家

country  clicks
-------  ------
0        222
66       34 
175      1000
45       650

我使用以下MYSQL语句来获取基于点击列的任何国家/地区的排名(只有一个结果)

SELECT COUNT(*) rank 
FROM countryTable a 
JOIN countryTable b 
   ON a.clicks <= b.clicks 
WHERE a.country = 45

以上将返回'2'。 然后在我的PHP代码中,我尝试访问排名值

$row =  mysql_fetch_array($result) or die(mysql_error()); 
echo $row['rank'];

但如果该国家排名第一,这不会返回任何结果。 即a.country = 175

连接ON是列之间的连接,而不是比较。

更新

SELECT COUNT(*)+1 rank 
FROM countryTable
WHERE clicks > (SELECT clicks FROM countryTable WHERE country = 45)

推理:搜索排名意味着搜索点击>给定点击的记录数。

因此,对于175,有0个国家/地区具有更好的点击次数=>排名1,国家/地区45,1个国家/地区点击次数更多=>排名2

PHP

$result = mysql_query("....")
$row = mysql_fetch_array($result)
...

通常它应该工作,除非您遇到连接到服务器的问题。 那是你应该使用你的调试技巧的地方。 执行var_dump($ result)查看是否返回false,如果是,则表示连接问题(检查mysql_connect或其他内容)

如果您正在寻找排名,请使用:

SELECT @rownum := @rownum + 1 AS num,
    t.country, t.clicks
FROM countryTable t, 
    (SELECT @rownum := 0) r
ORDER BY t.clicks DESC

结果

| NUM | COUNTRY | CLICKS |
--------------------------
|   1 |     175 |   1000 |
|   2 |      45 |    650 |
|   3 |       0 |    222 |
|   4 |      66 |     34 |

看到它在行动

@PutraKg我想你可以关闭这个问题,因为我在这篇文章中回答了它, 当被问到第一个排名时,MYSQL没有返回PHP的结果 ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM