if语句出现问题

时间:2018-10-28 07:04:43

标签: php mysqli

查询的目的是找出某只狗在演出中获得“第一”排名的次数,并将它们总计进行展示

我试图返回数据库中有多少个结果与“ 1st”匹配的字符串。答案是4,但是没有显示出来,因为显示为1111。因此,如何显示为数字4。

<?php
                    if ( isset($_GET['dog_id']) ) 
                    {

                    $query = "SELECT result.* , dogs.dog_name, shows.show_title, shows.show_id, dogs.sire
                    FROM  `result` 
                    INNER JOIN  `dogs` ON result.dog_id = dogs.dog_id
                    INNER JOIN  `shows` ON result.show_id = shows.show_id
                    AND result.dog_id = ".$_GET['dog_id']." 
                    ORDER BY class_name DESC";

                    $select_all_shows_query = mysqli_query($connection,$query);
                    while($row = mysqli_fetch_array($select_all_shows_query)) {


                    $dog_id         = $row['dog_id'];
                    $class_name     = $row['class_name'];
                    $award          = $row['award'];
                    $placement      = $row['placement'];

                ?>
                     <?php 


                    if ($placement == '1st'){
                    echo ($placement[0]);
                    }



                     ?>

3 个答案:

答案 0 :(得分:1)

您需要放置一个定义为

的计数器
<?php $count = 0 ?>

,然后每当sql查询返回结果为时,计数器就增加1。

<?php $count++ ?>

答案 1 :(得分:1)

您的输出是从...生成的

        if ($placement == '1st'){
        echo ($placement[0]);
        }

由于$placement1st,所以当您输出$placement[0]时,字符串的[0]是第一个字符-1

相反,您需要计算1st的数量,因此在循环之前

$firsts = 0;

然后在找到第一名时递增此值。...

if ($placement == '1st'){
    $firsts++;
}

然后在循环之后...

echo "First places={$firsts)".PHP_EOL;

答案 2 :(得分:1)

您正在使用placement[0],它将给出第0个字节。在使用if条件时,只有在放置位置为1st时,它才会进入循环。因此,第0个字节将始终为1。

您需要创建一个变量并将其递增,然后在while循环结束之后,您将拥有所需的总计数。