2015-06-19 22 views
1

我有這個疑問:庫MySQLi如何獲取的所有數據

$q = "SELECT SUM(cena) AS total, MONTH(datum) AS mesec 
FROM nakupi 
GROUP BY mesec"; 
$po = $mysqli->query($q); 
$mesecna_prodaja = $po->fetch_assoc(); 

該查詢從數據庫中選擇月度銷售數據。如果我在phpMyAdmin中運行相同的查詢,我會得到正確的結果。所有銷售月份與每個月的總銷售額。問題是,fet_assoc之後的$ mesecna_prodaja只返回一個結果,在上個月?我如何獲取所有數據,正如phpMyAdmin所做的那樣?我試過fetch_all,但它不工作(內部服務器錯誤)。

+0

'FETCH_ASSOC()'只應該從結果中提取一行。通常通過在while循環中使用獲取方法來獲得多個結果。 –

回答

0

我不知道你是如何看結果,但你需要遍歷你剛剛提取的關聯數組來查看所有結果。

嘗試類似於php documentation中所述。

/* fetch associative array */ 
while ($row = $po->fetch_assoc()) { 
    printf ("%s (%s)\n", $row["total"], $row["mesec"]); 
} 
+0

這個工作適合你嗎?如果是這樣,你應該upvote並選擇一個答案。如果沒有,讓我們知道,所以我們可以嘗試弄清楚是否還有其他事情正在進行。 – jdf

0

當你發現mysqli_fetch_assoc確實獲得數據行的你,爲了得到所有你將不得不通過你的結果集的所有行的結果。

這裏有很多方法可以做到這一點,但我要告訴你的while循環:

$q = "SELECT SUM(cena) AS total, MONTH(datum) AS mesec FROM nakupi GROUP BY mesec"; 

$po = $mysqli->query($q); 

//$mesecna_prodaja = $po->fetch_assoc(); //This only gets the first row 

//Setup an array to hold all the results 
$allMyResults = array(); 

//Iterate through all the results until there's nothing left (which will cause the while condition to fail) 
while ($row = $po->fetch_assoc()) { 
    //Add $row to allMyResults 
    $allMyResults[] = $row; 
} 

var_dump($allMyResults); //You should see all your results here. 

這裏的關鍵原則是,它是你的[代碼的]責任,通過迭代/遍歷所有結果。

REF:http://php.net/manual/en/mysqli-result.fetch-assoc.php