PHP:从SQL查询中读取数据到数组中

时间:2012-05-17 08:20:43

标签: php sql arrays

我是PHP的新手。我编写了下面给出的代码来创建数组" data"。它应该有10行,但由于某种原因,只有最后一行(第10行)被填充。 SQL查询可以肯定,因为我在MySQL Query Manager中检查过它(查询返回10行)。

$query1="SELECT * FROM tab1, tab2 WHERE tab1.column1=tab2.column2;";
    $result1=DatabaseConnector::ExecuteQueryArray($query1);
    $data = array();
    $i = 0;
    foreach ($result1 as $row):
        $data = array(
            array($i,array("xxx",' EE112',$row['column3'],'FT445'),"2004-03-01 10:00","2004-03-01 14:00"));
        $i++;
    endforeach;

更新1: 我有另一个与我最初的问题有关。当我尝试从数组中读取数据时,错误" Undefined offset:1"发生。有趣的是,当我填写数据"使用$data =而不是$data[] =的数组,没有错误,只填充了最后一行。

for($i=0; $i<count($data); ++$i) {
        $bar = new GanttBar($data[$i][0],$data[$i][1],$data[$i][2],$data[$i][3]);
        $graph->Add($bar);
    }

3 个答案:

答案 0 :(得分:2)

那是因为你在每次迭代时都覆盖了整个$ data变量。使用

$data[] = array(...

至于最新的错误 - 您应该使用foreach来迭代数组。这就是它的用途。

答案 1 :(得分:2)

应该像这样附加到数组中。

$data[] = array($i,array("xxx",' EE112',$row['column3'],'FT445'),"2004-03-01 10:00","2004-03-01 14:00");

答案 2 :(得分:1)

$data = array(...); // Typecasts $data to a new array with given keys and values
$data[] = array(...); // Typecasts a new array to the next array pointer in $data

在上面,第1行将创建一个存储在$data中的全新数组,覆盖所有以前的数据。在第2行,新数组将存储在已存在的数组$data中。