2013-11-04 339 views
0

我有以下代码:库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 

如何通过数组搜索,normall Y,我会使用类似:

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

但是,这并不工作 - 我认为因为有数组中的每个部分内两组数据?不知道该如何处理。

+0

你可能只是这样做,作为SQL查询的党,省去扫描之后的阵列。 – diggersworld

+0

@diggersworld - 感谢您的回复,非常感谢。我将如何实现这一目标? –

+1

使用'WHERE'子句...就像'WHERE q17 =“Admin&Clerical”'。不知道你的数据库结构。 – diggersworld

回答

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.")"; 
1

您可以通过使用HAVING条款,而不是WHERE使用MYSQL本身,实现这一目标。 要做到这一点,重写这样的查询。

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

欣赏Medi,我实际上想出了一个解决方案,如下所述。得到结果后,必须通过PHP。 –

+0

我在发布我的信息后看到了您的答案,它看起来像是同样的解决方案。 – Meti