我有一个sql语句,它返回一些记录,每个记录有10个属性。我如何获得数据并将其放入二维数组。当前我在做这个:
while($row1 = mysql_fetch_array($result1))
{
echo $row1[0][1]; //There is an error here
}
$row1是2D数组吗?(应该是因为我得到了n*m个结果)。如果$row1是一个二维数组,那么我不应该能够访问$row[0][1]吗?
mysql_fetch数组返回1-D数组,从查询结果中组合索引+键值的单行数据。如做
SELECT field1, field2, field3 FROM sometable
并对结果执行mysql_fetch_array将得到一个如下所示的数组:
$row1 = array(
0 => 'value of field1',
1 => 'value of field2',
2 => 'value of field3',
'field1' => 'value of field1'
'field2' => 'value of field2',
'field3' => 'value of field3'
)
如果您想将整个结果集作为单个数组处理,则必须先获取每一行并将其添加到该数组中:
$data = array();
while($row1 = mysql_fetch_array($result)) {
$data[] = $row1;
}
这将允许您执行$data[0][1]
(第一个记录[0]的第二个字段[1])
From the docs:
以关联数组、数字数组或两者的形式获取结果行
如果mysql_fetch_array
正在恢复1行数据,您期望第二次元是什么?
首先,您需要验证您得到的是什么类型的数组,然后您可以理解为什么您的键无效。尝试使用print_r
或var_dump
检查$row1.
$row1
一次只能保存一条记录,所以它是一个常规的一维数组。
如果你的查询返回
a b c
d e f
在while循环的第一次迭代中,row1
保存着a b c
,在第二次迭代中保存着d e f
,它们都是一维数组。
$row1是一个一维数组(一条记录),在您的示例中,包含10个值。
当代码循环遍历while语句时,$row1表示每条记录。
参考这里的文档:http://ca.php.net/manual/en/function.mysql-fetch-array.php