2013-05-01 36 views
0

我有一個查詢,像這樣:如何從此SELECT查詢中獲得正確的輸出?

SELECT * FROM `purchases` p 
JOIN `purchase_types` pt ON p.purchase_type = pt.node 

當我在phpMyAdmin運行它,它返回正確的結果集,像這樣:

node | purchase_type | amount_spent | node | name 
-------------------------------------------------- 
2 | 5    | 8.5000  | 5 | Lunch 
3 | 5    | 1.5000  | 5 | Lunch 
4 | 6    | 4.6600  | 6 | Dinner 

這是我的PHP代碼:

$sql = "SELECT * FROM `purchases` p 
     JOIN `purchase_types` pt ON p.purchase_type = pt.node"; 

$query = mysql_query($sql); 
$result = mysql_fetch_assoc($query); 

$purchases = array(); 
while($row = mysql_fetch_assoc($query)) { 
    $purchases[] = array(
     'name' => $row['name'], 
     'amount_spent' => $row['amount_spent'] 
    ); 
} 

$expenses返回以下輸出:

3 | 5    | 1.5000  | 5 | Lunch 
4 | 6    | 4.6600  | 6 | Dinner 

第一次「午餐」會發生什麼?我怎樣才能讓PHP輸出和直接的MySQL查詢輸出一樣?

回答

2

您在while之前致電mysql_fetch_accoc。別。


你也應該認識到,ext/mysql將被棄用,並升級您的代碼與PDO或mysqli的

0

嘗試用mysql_fetch_array適當使用參數化查詢,

$purchases = array(); 
while($row = mysql_fetch_array($query)) { 
    $purchases[] = $row; 
} 

,如果你想獲得的數據只是做

foreach($purchases as $key => $value) 
{ 
    $name = $value['name']; 
    $amount_spent = $value['amount_spent']; 

    echo 'name : '.$name.' , amount spent '.$amount_spent.'<br />'; 
}