Mysql Fetch Array Foreach


Mysql Fetch Array Foreach

我试图使用foreach循环来设置值以填充表,由于某种原因,我的数组在值内显示null。但是当我var转储$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 } } 
foreach($result_list as $row) {
    $productitems[] = array(
        'id' => $row['id'],
        'product'  => $row['product'],
        'price'  => $row['price']
    );              
}

试试这个。

回答你的问题,你得到后排作为一个数组,而不是对象,但你仍然试图访问它作为一个对象$row->id。用$row['id'], $row['product'], $row['price']代替。

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

$productitems = $pdo->fetchAll('PDO::FETCH_ASSOC); and then use foreach

改为

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

注意:请不要在新代码中使用mysql_*函数。它们不再被维护,并被正式弃用。见红框?学习预处理语句,并使用PDO或MySQLi——本文将帮助您决定使用哪一种。如果你选择PDO,这里有一个很好的教程。