我有这段代码:
$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的大小。这里发生了什么?
答案 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