MySQLi - 搜索数组

时间:2013-11-04 22:17:38

标签: 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->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)'];}

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

2 个答案:

答案 0 :(得分: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)'];
        }
    } 
}

答案 1 :(得分: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.")";
相关问题