PHP / MySQL - 将查询存储到多维数组中

时间:2015-10-08 09:35:40

标签: php mysql

我正在敲打这个。

实际上,我使用这种方式编写相同的算法。 但不幸的是,我不知何故忘记了。这是一个类似于我需要的代码。

$result=mysql_query("select * from mydata order by 'id'")or die('died');
$num_fields = mysql_num_fields($result); 
$j=0;
$x=1;
while($row=mysql_fetch_array($result)){  
    for($j=0;$j<$num_fields;$j++){
        $name = mysql_field_name($result, $j);
        $object[$x][$name]=$row[$name];
    }$x++;
}

最后,使用这个,我可以访问我的查询结果。

$ result = array;

for($row = 1; $row < count($object); $row++){
    $result[$row]['name of my field];
}

我目前的挑战是使用OOP而不是Procedural在MySQLi中编码。

我希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

每当你发现自己敲打头脑时,这意味着你正以最怪异和最不方便的方式完成一些基本任务。

这是你必须使用旧的mysql驱动程序的代码。

$object = array();
$result = mysql_query("select * from mydata order by id");
while($row = mysql_fetch_assoc($result)){
    $object[] = $row;
}

使用mysqli重写它没有问题。

然而,不是使用OOP在MySQLi中编码,而是必须使用OOP在PDO中对其进行编码:

$object = $pdo->query("select * from mydata order by id")->fetchAll();

答案 1 :(得分:0)

我明白了。

我觉得我必须分享它。

    function QueryToArray($result){
        $fields = array();
        $resultset = array();
        $x = 1;
        $y = 1;

        while ($property = mysqli_fetch_field($result)) {
            $fields[$x] = $property->name;
            $x++;
        }

        while($rows = mysqli_fetch_array($result)){
            for($x = 1; $x <= count($fields); $x++){
                $fieldname = $fields[$x];
            $resultset[$y][$fieldname] = $rows[$fieldname];
            }
            $y++;
        }               
        return $resultset;
    }

所以,这是我的功能(我知道我仍然可以使它更清洁)。

有了这个,每当我查询我的表时,我所有的代码就是这个。

$result = $this->QueryToArray($result);

for($x = 1; $x <= count($result); $x++){
    echo $result[$x]['Name'];   
    echo " - " . $result[$x]['Description'] . "<br>";
    /* $result[row number][field name]  */  
}

我让生活更轻松,我可以更轻松地进行分页。

虽然它不仅仅是OOP,但它可以完成工作。