2013-11-04 108 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