我有一个sql语句,它返回多个记录,每个记录都有10个属性。如何获取数据并将其放入2D数组中。目前我这样做:
while($row1 = mysql_fetch_array($result1))
{
echo $row1[0][1]; //There is an error here
}
$ row1是2D数组吗? (这应该是因为我得到了n * m的结果)。如果$ row1是2d数组,那么我不能访问$ row [0] [1]?
答案 0 :(得分:1)
mysql_fetch数组返回一维数组,从查询结果中合并一行数据的索引+键控值。例如做
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]
(第1记录[0]的第2个字段[1])
答案 1 :(得分:0)
$row1
一次只能保存一条记录,因此它是一个常规的一维数组。
如果您的查询返回
a b c
d e f
在while循环的第一次迭代中,row1
保持a b c
,在第二次迭代中,它保存d e f
,这两个维度都是单维数据。
答案 2 :(得分:0)
来自文档:
获取结果行作为关联数组,数字数组或两者
如果mysql_fetch_array
正在恢复1行数据,您对第二维的期望是什么?
首先,您需要验证您获得的阵列类型,然后您才能理解为什么您的密钥无效。尝试使用print_r
或var_dump
来检查$ row1。
答案 3 :(得分:0)
$ row1是一个1维数组(单个记录),在您的情况下,包含10个值。
当代码循环遍历while语句时,$ row1代表每条记录。
请参阅此处的文档:http://ca.php.net/manual/en/function.mysql-fetch-array.php