打印数组元素时的未定义偏移量

时间:2014-06-02 00:10:14

标签: php mysql

我有这段代码:

$items_query = mysql_query('SELECT * FROM Items_Orders NATURAL JOIN Items
                                    WHERE order_id="'.$order->order_id.'"');

    if(!$items_query)
    {
        echo 'MySQL error: '.mysql_error();
        die();
    }

    //add each item to the order
    while($items_row = mysql_fetch_array($items_query))
    {
        echo "item: ";

        for($i = 0; $i < count($items_row); $i++)
        {
            echo $items_row[$i];
        }   
    }

当打印items_row的元素时,我的代码会超出items行的范围。我很困惑为什么会这样。我明确定义i只迭代到items_row的大小。这里发生了什么?

2 个答案:

答案 0 :(得分:3)

您正在计算双倍长度,因为默认情况下,您将被命名为编号值。请尝试以下

while($items_row = mysql_fetch_array($items_query, MYSQL_NUM))
{
    echo "item: ";

    for($i = 0; $i < count($items_row); $i++)
    {
        echo $items_row[$i];
    }   
}

请参阅offical docs

P.S。不推荐使用mysql_ *,查看PDO对象。

答案 1 :(得分:0)

试试这个:

while($row = mysql_fetch_array($query,MYSQL_NUM)){
   $count = count($row);
   for($i = 0;$i < $count;$i++){
       echo $row[$i];
   }
}

但是你的代码非常脏,为什么你不使用PDO?如何制作转义查询的快捷方式...... PDO manual