Php MySQLi-通过数组进行搜索

Php MySQLi-通过数组进行搜索,php,arrays,mysqli,Php,Arrays,Mysqli,我有以下代码: function resultToArray($result) { $rows = array(); while($row = $result->fetch_assoc()) { $rows[] = $row; } return $rows; } // Usage $query = 'SELECT q17, COUNT(q17) FROM tresults GROUP BY q17'; $result = $mysqli-&

我有以下代码:

function resultToArray($result) {
    $rows = array();
    while($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }
    return $rows;
}

// Usage
$query = 'SELECT q17, COUNT(q17) FROM tresults GROUP BY q17';
$result = $mysqli->query($query);
$rows = resultToArray($result);
//print_r($rows); // Array of rows
$result->free();
带回以下内容(仅摘录):

我正在努力解决的是如何返回数据,基本上,我需要一些代码来提取数据,如下所示:

WHERE Array = Admin & Clerical BRING BACK THE COUNT(q17) number
如何在数组中搜索,通常,我会使用以下内容:

if($rows['q17']==$q[$i]){echo$rows['COUNT(q17)'];}
但是这不起作用-我假设是因为数组的每个部分中都有两组数据?不知道该怎么处理

function resultToArray($results) {
    $rows = array();
    while($row = $results->fetch_assoc()) {
        $rows[] = $row;
    }
    return $rows;
}

// Usage
$querys = 'SELECT q17, COUNT(q17) FROM tresults GROUP BY q17';
$results = $mysqli->query($querys);
$rows = resultToArray($results);
//print_r($rows); // Array of rows
$results->free();

function searchForId($id, $array) {
   foreach ($array as $key => $val) {
       if ($val['q17'] === $id) {
           return $val['COUNT(q17)'];
       }
   }
   return null;
}
使用以下命令调用函数:

    $id = searchForId($q[$i], $rows);echo " (".$id.")";

您可以通过使用MYSQL本身来实现这一点,方法是使用
HAVING
子句而不是
WHERE
。 要执行此操作,请像这样重写查询

$query='选择q17,按q17的q17=“管理和文书”将(q17)从tresults组中计数为qcount';
echo$row[0]['qcount']//返回118
如果在从数据库中获取结果后仍希望使用PHP执行此操作,则操作方式如下:

function get_q17_count($rows, $q17){
    foreach ($rows as $onerow) {
        if($onerow['q17'] == $q17){
            return $onerow['COUNT(q17)'];
        }
    } 
}

您可以作为SQL查询的一方这样做,以避免以后扫描数组。@diggersworld-感谢您的回复,非常感谢。我该如何实现呢?使用
WHERE
子句。。。类似于
WHERE q17=“管理员和文书”
。我不知道您的数据库结构。谢谢,非常感谢,但我在阵列中有400行数据。
WHERE
子句不是我想要的,因为我正在尝试在PHP代码的另一个循环中循环数组。感谢Medi,我实际上想出了一个解决方案,如下所述。得到结果后,它必须通过PHP。我在发布我的答案后看到了你的答案,看起来是相同的解决方案。
function get_q17_count($rows, $q17){
    foreach ($rows as $onerow) {
        if($onerow['q17'] == $q17){
            return $onerow['COUNT(q17)'];
        }
    } 
}