2013-07-15 48 views
0

我正在使用PHP和MySql。以下是我的代碼:爲什麼查詢只返回一條記錄而不是很多?

$con=mysql_connect("localhost","XYZ","pqr") or die("Failed to connect with database!!!!"); 
    mysql_select_db("LMN", $con); 
$sql =" SELECT DATE_FORMAT(FROM_UNIXTIME(transaction_date) , '%d/%m/%Y') 'date', COUNT(*) 'total count', SUM(transaction_status = 'success') "; 
     $sql .=" success, SUM(transaction_status = 'inprocess') inprocess, SUM(transaction_status = 'fail') fail, "; 
     $sql .=" SUM(transaction_status = 'cancelled') cancelled FROM user_transaction WHERE "; 
     $sql .=" transaction_date >= 1325376000 AND transaction_date <= 1373846400 GROUP BY date(FROM_UNIXTIME(transaction_date)) "; 
$r= mysql_query($sql) or die(mysql_error()); 

     $result = mysql_fetch_array($r, MYSQL_ASSOC); 
     print_r($result); 
die; 

如果我在phpMyAdmin運行上面的查詢它給我完美的結果(即47個匹配的記錄),但是當我通過PHP文件運行它給我的只有單個記錄s如下:

Array 
(
    [date] => 11/04/2012 
    [total count] => 1 
    [success] => 0 
    [inprocess] => 0 
    [fail] => 0 
    [cancelled] => 1 
) 

其實這是第一個匹配的記錄。你能幫我獲取所有匹配的記錄數組,因爲我在PHPMyadmin中?提前致謝。

+3

'mysql_fetch_array()'返回結果集中的下一條記錄。您需要重複調​​用它,直到沒有其他記錄。 – eggyal

+1

http://php.net/manual/en/mysqli-result.fetch-array.php – Schleis

回答

0

如果你希望得到一些結果,你應該遍歷它:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    echo($row[0]); //example 
} 
0

使用此:

While($result = mysql_fetch_array($r)) { 
    print_r($result); 
} 

瞭解更多關於mysql_fetch_array功能,返回結果一個接一個,thefor你需要使用While :)

2

mysql_fetch_array()通常被稱爲while循環becau如果沒有更多記錄要讀取,它會返回false

獲取所有記錄到一個數組:

$rows = array(); 
while ($row = mysql_fetch_array($result)) 
    $rows[] = $row; 

但這通常是非常低效和浪費了大量的內存。如果可以的話,把你的實際處理放在循環中。

相關問題