【问题标题】:Why isn't my count going up with my while statement php?为什么我的计数没有随着我的 while 语句 php 增加?
【发布时间】:2021-05-16 13:53:07
【问题描述】:

我有一个名为“records”的表,还有一个名为“gender”的列,其值为“M”和“F”。我想统计男性和女性的数量并将它们回显到我的 html 文档中,但我的输出一直是 0。

   $sql = "SELECT * FROM records";
   if($result = mysqli_query($conn, $sql)){
      $genderM = 0;
      $genderF = 0;

      while($row = mysqli_fetch_array($result)){
         $gender = $row['gender'] . "<br> \n";
               
         if ($gender == 'M') {
             echo "TRUE <br> \n";                  
             $genderM++;
         }
         if ($gender == 'F') {
             $genderF++;
         }
         else {
             echo '';
         }
     }
     echo $genderM . '<br>';
     echo $genderF . '<br>';
 } 
 mysqli_close($conn);

【问题讨论】:

  • 您正在将“
    ”添加到 $gender 变量,然后检查变量是否等于 M 或 F,这绝不会是这种情况!相反,您可以检查 $row['gender']

标签: php html mysql sql database


【解决方案1】:

您将"&lt;br&gt; \n" 添加到$gender,因此无法进行比较。

您最好检查$row['gender'],即

if ($row['gender'] == 'M') {
... etc

【讨论】:

    【解决方案2】:

    MySQL 有更好的选择来为您获得理想的结果 - SELECT COUNT(*)

    $db = new mysqli("localhost", "db_user", "db_pass", "db_name");
    $result = $db->query("SELECT COUNT(*) FROM `records` WHERE `gender` = M");
    $row = $result->fetch_row();
    echo 'COUNT GENDER M : ', $row[0];
    

    然后对F 性别执行相同操作。

    如您所见 - 无需使用计数器使 while 循环处理每一行。

    查看官方文档https://www.php.net/manual/ru/mysqli.query.php

    【讨论】:

      【解决方案3】:

      您可以使用array_count_values 函数让事情变得更干净。

      $array = {"F", "M", "F"}
      print_r(array_count_values($array));
      

      输出:

      Array
      (
       [F] => 2
       [M] => 1
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 1970-01-01
        • 2011-07-16
        • 2011-06-30
        相关资源
        最近更新 更多