Mysql结果进入数组(PHP)

时间:2010-06-06 11:28:47

标签: php arrays

如何将mysql结果(从mysql_fetch_array)转换为这样的形式?

$some = array(
     "comments" => array(
         array( "text" => "hi", "id" => "1" ),
         array( "text" => "hi", "id" => "2" ),
         array( "text" => "hi", "id" => "3" ),
         array( "text" => "hi", "id" => "4" )
    )
);

而db看起来像:

评论

id  text
1   blabla bla
2   bla bla

我试图用foreach / while获取值并将其插入两个数组但不是 成功...

$some = array(
    "comments" => array()
);

$q = $mysql->sf('*', TBL_QST);
foreach($mysql->fetch($q) as $row) {
    $some[] = $row;
    // $some["comments"][] = $row;
}

6 个答案:

答案 0 :(得分:5)

我的print_r给出:

Array
(
    [comments] => Array
        (
            [0] => Array
                (
                    [text] => lorem ipsum
                    [id] => 0
                )
            [1] => Array
                (
                    [text] => lorem ipsum
                    [id] => 1
                )
            [2] => Array
                (
                    [text] => lorem ipsum
                    [id] => 2
                )
        )
)

我为它做的PHP是:

$comments = array(
    'comments' => array()
    );

/* To simualate the loop */
for ($i = 0; $i < 3; $i++) { 
    array_push($comments['comments'], array(
        'text' => 'lorem ipsum',
        'id' => $i
        )
    );
}

我希望这会有任何帮助,而且我没有误解你的问题。

答案 1 :(得分:2)

这就是我要做的事情:

$dbc = mysql_connect(SERVER, USERNAME, PASSWORD);
mysql_select_db($dbc, DATABASE);

$query = "SELECT `id`, `text` FROM `comments`";
$result = mysql_query($dbc, $query);

$some = Array("comments" => Array());
while($row = mysql_fetch_array($result)) {
    array_push($some['comments'], Array($row['id'], $row['text']));
}

答案 2 :(得分:2)

改为使用mysql_fetch_assoc(),或使用MYSQL_ASSOC作为mysql_fetch_array()的第二个参数。

答案 3 :(得分:0)

$some['comments'][] = ...

在循环中

答案 4 :(得分:0)

你想要的是一个 associative array ,因此在PHP中已经开发了一个名为mysql_fetch_assoc()的特殊函数。

<强>更新
对不起,我明白你错了。在这种情况下,您需要以下代码块。

$sql="select id,text from comments";
$res=mysql_query($sql);
$arr=array();
while($row=mysql_fetch_assoc($res)){
     $arr[]=array('id'=>$row['id'],'text'=>$row['text']);
}
$some=array('comments'=>$arr);

答案 5 :(得分:0)

创建一个与注释表具有相同结构的数组:

$results = mysql_query("SELECT `id`, `text` FROM `comments`");
while ($row = mysql_fetch_array($results, MYSQL_NUM)) {$comments[intval($row[0])] = $row[1];}

评论数组现在已经结构化了:

comments[int `id`]=>`comment`

然后,如果你需要“some”数组中的comments

$some['comments'] = $comments;