1

我正在尝试使用 foreach 循环来设置值以填充表,由于某种原因,我的数组在值内显示为空。但是当我 var dump $result_list[] 它显示产品数组时,我做错了吗?谢谢

$result = mysql_query("SELECT id, product, price FROM products");


$result_list = array();
while($row = mysql_fetch_array($result)) {
   $result_list[] = $row;
}

foreach($result_list as $row) {

    $productitems[] = array(
        'id' => $row->id,
        'product'  => $row->product,
        'price'  => $row->price
    );              
}

var_dump($productitems);


array(2) { [0]=> array(3) { ["id"]=> NULL ["product"]=> NULL ["price"]=> NULL } [1]=> array(3) { ["id"]=> NULL ["product"]=> NULL ["price"]=> NULL } } 
4

3 回答 3

6
foreach($result_list as $row) {

    $productitems[] = array(
        'id' => $row['id'],
        'product'  => $row['product'],
        'price'  => $row['price']
    );              
}

尝试这个。

于 2013-06-06T13:46:05.483 回答
1

改成,

foreach($result_list as $row) {
    $productitems[] = array(
       'id' => $row['id'],
       'product'  => $row['product'],
       'price'  => $row['price']
    );
}

注意: 请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-06-06T13:45:48.087 回答
1

要回答您的问题,您将作为数组而不是对象返回行,但您仍然尝试将其作为对象访问$row->id。而是使用$row['id'], $row['product'], $row['price']

不要使用 mysql_* 函数,而是使用 PDO 或 MySQLi,例如看看 PDO 是多么简单:

$productitems = $pdo->fetchAll(\PDO::FETCH_ASSOC); and then use foreach
于 2013-06-06T13:46:13.747 回答