[英]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.