0

我有以下代码:

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();

带回以下内容(仅摘录):

Array ( [0] => Array ( [q17] => [COUNT(q17)] => 7 ) [1] => Array ( [q17] => Admin & Clerical [COUNT(q17)] => 118 )......etc.

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

WHERE Array = Admin & Clerical BRING BACK THE COUNT(q17) number

我如何搜索数组,通常我会使用类似的东西:

if($rows['q17']==$q[$i]){echo$rows['COUNT(q17)'];}

但这不起作用 - 我假设是因为数组的每个部分都有两组数据?不知道如何处理。

4

2 回答 2

1

您可以通过使用MYSQL本身,通过使用HAVING子句而不是WHERE. 为此,请像这样重写您的查询。

$query = 'SELECT q17, COUNT(q17) as qcount FROM tresults GROUP BY q17 HAVING q17="Admin & Clerical" ';

echo $row[0]['qcount']; //return  118

如果您在从数据库中获取结果后仍想使用 PHP,它就是这样做的:

function get_q17_count($rows, $q17){
    foreach ($rows as $onerow) {
        if($onerow['q17'] == $q17){
            return $onerow['COUNT(q17)'];
        }
    } 
}
于 2013-11-04T22:51:31.637 回答
0
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.")";
于 2013-11-04T22:48:51.417 回答