代码之家  ›  专栏  ›  技术社区  ›  user350034

mysql结果到数组(php)

  •  2
  • user350034  · 技术社区  · 16 年前

    如何将mysql结果(从mysql_fetch_数组)转换成这样的形式?

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

    虽然数据库看起来像:

    评论

    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 回复  |  直到 11 年前
        1
  •  5
  •   hellozimi    16 年前

    我的印刷品提供:

    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
            )
        );
    }
    

    我希望这能对你有所帮助,我没有误解你的问题。

        2
  •  2
  •   draganHR    16 年前

    使用 mysql_fetch_assoc() 代替或使用 MYSQL_ASSOC 作为第二个论点 mysql_fetch_array() .

        3
  •  2
  •   Christian Mann    16 年前

    我要做的是:

    $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']));
    }
    
        4
  •  0
  •   zerkms    16 年前
    $some['comments'][] = ...
    

    环内

        5
  •  0
  •   Bakhtiyor    16 年前

    你想要的是 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);
    
        6
  •  0
  •   Misunderstood    11 年前

    使用与注释表相同的结构创建数组:

    $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`
    

    如果你需要的话 comments 在“some”数组中:

    $some['comments'] = $comments;