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