簡體   English   中英

如何使用PHP從MySQL表循環多維數組

[英]How to loop multidimensional array from mysql table with php

在閱讀了多個stackoverflow問題之后,我仍然對為什么無法使它正常工作感到困惑。 我試圖將mysql表的所有行都放入多維數組。 我希望只是找到一個簡單的示例,但到目前為止,我還沒有完全理解。

我在Google和Stack上看到的示例主要是關於解析或使其在頁面上迭代的。 我試圖讓mysql行迭代到它們的數組中。 我開始使用的示例代碼與此類似:

// This will hopefully get all of the categories
case 'get_all_categories' :
    $query = '
        SELECT `id`,`category_name`, `category_spam`
        FROM `category`
        ';

    if (!$go = @mysql_query($query)) {
        $results = Array(
                    'head' => Array(
                            'status' => '0',
                            'error_number' => '604', 
                            'error_message' => 'Select Failed. '.
                            'Probably wrong name supplied.'
                        ),
                    'body' => Array ()
                );
    } else {
        $fetch = mysql_fetch_row($go);
        $return = Array($fetch[0],$fetch[1]);  
        $results = Array(  
                    'body' => Array (  
                            'id'    => $return[0],  
                            'category_name' => $return[1]  
                        )  
                ); 
    }
    break;

顯然,這給了我一個結果,因為這就是我要它與fetch_row一起使用的fetch_row

//outputs
{"body":{"id":"1","category_name":"Star Wars"}}

我嘗試使用mysql_fetch_assoc ,然后執行foreach循環? 我也嘗試過執行mysql_fetch_all($go) ,然后嘗試將行放入其中。

if (!$go = @mysql_query($query)) {
    $results = Array(
                'head' => Array(
                        'status' => '0',
                        'error_number' => '604', 
                        'error_message' => 'Select Failed. '.
                        'Probably wrong name supplied.'
                    ),
                'body' => Array ()
            );
} else {
    while($myrow = mysql_fetch_row($go)){
        Array(
            'body' => Array(
                    'id' => $myrow[o], 
                    'category_name' => $myrow[1],
                    'category_spam' => $myrow[2]
                )
    }
    );
}
break;

我正在嘗試進行一個api調用,其中主體包含所有類別及其ID(我認為,要點是類別可以拉出並顯示列表...我希望可以立即進行api(不是一個漫無目的的問題)

所以:如何使查詢接受所有mysql行並將它們循環到body數組的數組中。 (注意:如果我的術語與我的總體目標(使一個api調用顯示我的整個mysql數組)是錯誤的,那么我對API還是陌生的,請告訴我。)

編輯只是從評論中添加更多信息

輸出是JSON編碼的(很抱歉,我應該對此進行解釋)

switch ($_GET['format']) {
        case 'xml' :
                @header ("content-type: text/xml charset=utf-8");
                $xml = new XmlWriter();
                $xml->openMemory();
                $xml->startDocument('1.0', 'UTF-8');
                $xml->startElement('callback');
                $xml->writeAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
                $xml->writeAttribute('xsi:noNamespaceSchemaLocation','schema.xsd');
                function write(XMLWriter $xml, $data){
                        foreach($data as $key => $value){
                                if(is_array($value)){
                                        $xml->startElement($key);
                                        write($xml, $value);
                                        $xml->endElement();
                                        continue;
                                }
                                $xml->writeElement($key, $value);
                        }
                }
                write($xml, $results);

                $xml->endElement();
                echo $xml->outputMemory(true);
            break;
        case 'json' :
                @header ("content-type: text/json charset=utf-8");
                echo json_encode($results);
            break;
        case 'php' :
                header ("content-type: text/php charset=utf-8");  
                echo serialize($results);  
            break;
    }
   $res = mysql_query($query);   
   $results = array();
   $i = 0;
   while($row=mysql_fetch_array($res)) {
            $results['body'][$i]['id']            =  $row[o];
            $results['body'][$i]['category_name'] =  $row[1];
            $results['body'][$i]['category_spam'] =  $row[2];
            $i++;
   }
   if(empty($results['body'])){
          $results['head'] =  Array(
                            'status' => '0',
                            'error_number' => '604', 
                            'error_message' => 'Select Failed. '.
                            'Probably wrong name supplied.'
                             );
   }

   break;

試試上面的代碼,它將為您的json響應創建$ result數組。

休息一切都很好!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM