0

次のようなクエリがあります。

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

for eaching over$expensesは、次の出力を返します。

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

最初の「ランチ」はどうなる?PHP の出力を直接の MySQL クエリの出力と同じにするにはどうすればよいですか?

4

2 に答える 2

2

mysql_fetch_accocの前に呼び出しますwhile。しないでください。


また、非推奨になることを認識しext/mysql、コードをアップグレードして、PDO または mysqli で適切にパラメーター化されたクエリを使用する必要があります。

于 2013-05-01T03:19:52.703 に答える
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 />';
}
于 2013-05-01T03:40:17.183 に答える