当被要求获得第一个排名时,MYSQL不会返回PHP中的结果

时间:2013-01-13 05:09:16

标签: php mysql

我试图使用PHP从MySQL表中获取1条记录。我尝试了很多不同的SELECT语句,虽然它们都在MYSQL中工作,但它们拒绝在php中返回任何结果。

countriesRanking表是一个简单的两列表

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

mysql返回国家/地区列(1,2,3等等)的排名,它返回除第一个排名国家之外的所有结果。例如,当country = 175时,应返回1但不返回结果。通过Web浏览器直接查询返回空白页,没有错误信息。我的PHP代码

$result = mysql_query("SELECT FIND_IN_SET(clicks,
(SELECT GROUP_CONCAT(DISTINCT clicks  ORDER BY clicks DESC) 
FROM countriesRanking)) rank FROM countriesRanking
WHERE country = '$country'") or die(mysql_error());

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

修改

我尝试了以下内容,但获得了相同的空白页

var_dump($row['rank']);

编辑2

对于成功的查询,print_r($ result)返回类似资源ID#4的内容。而print_r($ row)返回Array([0] => 4 [rank] => 4)。但在查询排名靠前的国家时。例如country = 175,它返回一个空白页面。

4 个答案:

答案 0 :(得分:1)

假设您没有收到错误消息,表示您已成功连接到数据库。你只是没有找回任何价值观。 尝试:

$row = mysql_fetch_row($result);

我通常认为$ row = mysql_fetch_assoc($ result);会工作,但如果这些都不起作用,它必须是你的mysql_query中的东西。

答案 1 :(得分:1)

您可以按照以下方式进行调试。

  1. 通过在PHPMyAdmin上运行它来确保您的SQL是正确的并检查结果。
  2. 确保您没有任何致命错误,如果您得到一个空白页面有错误。打开PHP错误并查看。
  3. print_r($result)并查看它是否为空。
  4. 如果您只想进行第一次排名,请将LIMIT 1添加到您的查询

答案 2 :(得分:1)

如果您只想要一个来自数据库的记录,那么您必须在查询中使用限制

$result = mysql_query("SELECT FIND_IN_SET(clicks,
(SELECT GROUP_CONCAT(DISTINCT clicks  ORDER BY clicks DESC) 
FROM countriesRanking)) rank FROM countriesRanking
WHERE country = '$country' LIMIT 1") or die(mysql_error());

之后使用while循环

while($row =  mysql_fetch_assoc($result)) {
    $theranking = $row['rank'];
}
echo $theranking;

答案 3 :(得分:1)

试一试。它基于您之前的问题。 MYSQL returns empty result in PHP
 MYSQLI版本:

<?PHP
function rank(){
/* connect to database */
$hostname = 'server';
$user = 'username';
$password = 'password';
$database = 'database';

    $link = mysqli_connect($hostname,$user,$password,$database);

    /* check connection */

    if (!$link){ 
        echo ('Unable to connect to the database');
    }

    else{
    $query = "SELECT COUNT(*) rank FROM countryTable a JOIN countryTable b ON a.clicks <= b.clicks WHERE a.country = 175";
    $result = mysqli_query($link,$query);
    $arr_result =  mysqli_fetch_array($result,MYSQLI_BOTH); 
        return $arr_result['rank'];
    }
    mysqli_close($link);
}

echo rank();

?>

MYSQL版本:

<?PHP
function rank(){
  /* connect to database */
  $hostname = 'server';
  $user = 'username';
  $password = 'password';
  $database = 'database';

  $link = mysql_connect($hostname,$user,$password);

  /* check connection */

  if (!$link){ 
    echo ('Unable to connect to the database');
  }

  else{
  $query = "SELECT COUNT(*) rank FROM countryTable a JOIN countryTable b ON a.clicks <= b.clicks WHERE a.country = 66";
  mysql_select_db($database);
  $result = mysql_query($query);
  $arr_result = mysql_fetch_array($result,MYSQL_BOTH); 
  return $arr_result['rank'];
  }
  mysql_close($link);
}

echo rank();

?>
相关问题