-1

データベース内の各行の配列変数に_ _を追加しようとしています。
私のtestTableには現在2行ありますが、このコードを実行すると、配列に「プッシュ」されるのは1つだけです。

$result = mysql_query("SELECT * FROM testTable ORDER BY dateAdded DESC");
while($row = mysql_fetch_array($result)) {
    $Array = array();
    array_push($Array, array('id' => $row['id'], 'title' => $row['title'], 'desc' => $row['desc'],  'image' => $row['image'], 'dateAdded' => $row['dateAdded']);
}

print_r($Array);

出力:

Array ( [0] => Array ( [id] => 2 [title] => test test test [desc] => text text text [image] => http://domain.com/sampleImg.png [dateAdded] => 2012-06-13 15:58:43 ) )    

たとえば、タイトルをエコーし​​ようとしたときに機能しました...次のように:

while($row = mysql_fetch_array($result)) {
    echo $row['title'];
}
4

2 に答える 2

5

$Array$productsArrayループの外にある必要があります

$result = mysql_query("SELECT * FROM testTable ORDER BY dateAdded DESC");
$productsArray= array();
while($row = mysql_fetch_array($result)) {
    array_push($productsArray, array('id' => $row['id'], 'title' => $row['title'], 'desc' => $row['desc'],  'image' => $row['image'], 'dateAdded' => $row['dateAdded']);
}

print_r($productsArray);
于 2012-06-19T15:43:05.407 に答える
2

@JohnCondeの答えは機能しますが、代わりに次のようにコードを構成した方がよいでしょう。

$result = mysql_query("SELECT id, title, `desc`, image, dateAdded FROM testTable ORDER BY dateAdded DESC");
$productsArray = array();
while ($row = mysql_fetch_array($result)) {
    $productsArray[] = $row;
}

print_r($productsArray);

SELECT *特定のフィールドのサブセットのみを使用する場合は無駄です。に追加する配列を再構築するのも無駄です。$productsArrayこれは、本質的に によって返される配列と同じmysql_fetch_array()です。

編集:mysqlまた、ドライバーは新しいアプリケーションでの使用が推奨されなくなっ たことにも注意してください。代わりにPDOまたはMySQL Native Driverを使用することをお勧めします。

于 2012-06-19T15:47:35.363 に答える