MySQLi为什么我只获得1个结果?

时间:2018-03-13 13:59:06

标签: php mysqli

result_category中有三个“BC”,但我只得到1个结果。这是一个人格测验。请帮忙。我也试过$ query =“SELECT result FROM quiz_map where result_category ='BC'”;但仍然只有1个结果显示出来。

$result = mysqli_query($link, $query);

$cat_a = $cat_b = $cat_c = $cat_d = $cat_e = 0;
while($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    $cat = $row['category'];
    if ($cat == "A") {
        $cat_a += 1;
    } elseif ($cat == "B") {
        $cat_b += 1;
    } elseif ($cat == "C") {
        $cat_c += 1;
    } elseif ($cat == "D") {
        $cat_d += 1;
    } elseif ($cat == "E") {
        $cat_e += 1;
    }
}

$array = array('A' => $cat_a, 'B' => $cat_b, 'C' => $cat_c, 'D' => $cat_d, 'E' => $cat_e);
$str = '';

foreach ($array as $i => $value) {
    if ($value >= 6) {      
        $str = $i;
        break;
    } elseif ($value >= 2) {        
        $str .= $i;
    }
}

$var = sort($array);

$query = "SELECT result FROM quiz_map where result_category = '$str' LIMIT 1";
$result = mysqli_query($link, $query);

$row = mysqli_fetch_array($result);
echo $row[0];
?>

enter image description here

1 个答案:

答案 0 :(得分:1)

你的代码有很多问题!

正如 @IsThisJavascript@Cashbee

指出的那样
  • 您正在使用LIMIT 1语句执行查询,它只会返回一个记录。

我自己指出

  • 如果您只回显数组的第一个值,那么echo $row[0]的结果会有相同的结果吗?

正如 @IsThisJavascript指出的那样:

  • 您需要循环结果数组,如下所示:
 while($row = mysqli_fetch_array($result)){  
     echo $row['result_category'];  
 }
  • 考虑将查询从'='切换为'%like%'语句,以便在想要获得partionaly汇总字符串的值时最大化结果。