计算限制数据库中的总记录数

时间:2014-10-25 14:17:10

标签: php mysql

我只想在我的数据库中向总用户显示20%的用户。这是我在PHP中的代码,但我使用限制3来显示用户。但是,如果我想从总用户中显示20%呢?这意味着我必须计算我的字段中的所有行并将其乘以0.2。但它不起作用。所以这是我的开头代码,我还没改变它。

<table class="table table-striped table-hover ">
      <thead>
        <tr>
        </tr>
      </thead>
      <tbody>
      <?php

      function getName($id){
        $d=mysql_fetch_array(mysql_query("SELECT * FROM infouser WHERE ID_User='$id' "));   
        return $d['fullname'];
    } 


    $sqlx= mysql_query("SELECT * FROM correlation WHERE ID_User = '".$_SESSION['iduser']."' ORDER BY result DESC limit 3");
    $i=0;
    while(
        $datax=mysql_fetch_array($sqlx))
        {       
        $i++;
    $ID_User=$data['ID_User'];
    $u[$i]=$ID_User;
    ?>


        <tr>
          <td><?php echo $i?></td>
          <td><?php echo getName($datax['ID_User_Recommendation'])?></td>
          <td><a href= "test.php?page_owner=<?PHP echo base64_encode(strip_tags($datax['ID_User_Recommendation']));?>" >View Profile</a></td>
        </tr>
    <?php    }
    ?>
      </tbody>
    </table> 

我编辑了我的上一篇文章,清楚地说明了这一点。因为我尝试了答案,但仍然卡住而且不起作用。所以在这里,我给出了我不会改变的代码。请帮忙,因为我觉得这并不简单。无论如何,提前谢谢你。 顺便说一下,我把这个文件包含在另一个文件中,另一个文件已经包含在文件中,用于连接数据库。

2 个答案:

答案 0 :(得分:0)

$sql = new mysqli ('HOST','DB_USER','DB_PASS','DB'); //change to your values
$rec_user =("SELECT ID_User_Recommend  FROM correlation");
if ($result = $sql->query($rec_user)){
    $limiter = $result->num_rows;
    $result->free();
}
$limit = round($limiter * 0.2,0,PHP_ROUND_HALF_EVEN);
$iduser = $_SESSION['iduser'];
$sqlx= "SELECT * FROM correlation ORDER BY result DESC limit $limit";

if ($result=$sql->query($sqlx)) {


while($datax=$result->fetch_assoc())
    {       

echo $datax['ID_User'];
}
}
?>

这将为您提供mysql可以处理的第一个查询的编号,并将运行查询。

答案 1 :(得分:0)

首先,由于语法不正确,页面将为空。 您应该更改php.ini文件(https://stackoverflow.com/a/10667432/977026)中的display_errors设置,以便显示错误,并且您可以知道要修复的内容。

有很多错误:

  • 您的第一个查询甚至没有被执行
  • 您正在将查询文本相乘,但没有任何意义
  • 在该查询中,*不应该在那里
  • 您没有关闭,因此语法错误
  • 您还应该避免使用mysql扩展,并且更喜欢mysqli扩展。
  • 尝试为变量提供逻辑名称
  • 使用良好的缩进非常严格,这有助于以后维护代码
  • 你没有打印任何东西,所以页面当然是空的
  • 在向查询添加变量时要小心,这可用于破解您的网站。要确保ID有效,可以将其强制转换为整数。否则,请使用mysqli_real_escape_string(http://php.net/manual/en/mysqli.real-escape-string.php

尝试这样的事情:

<?php
$id = (int)$_SESSION['iduser'];
$user_query = mysqli_query("SELECT COUNT(ID_User_Recommend) FROM correlation WHERE ID_User = $id");
if ($user_count = mysqli_fetch_array($user_query)) {
    $limit = (int)$user_count[0]/5;

    $list_query = mysql_query("SELECT * FROM correlation WHERE ID_User = $id ORDER BY result DESC limit $limit");
    $users = array();
    while($user = mysqli_fetch_assoc($list_query)) {
        $users[] = $user['ID_User'];
    }
    print_r($users);
    mysqli_free_result($list_query);
}
mysqli_free_result($user_query);
?>