如何使用php从mysql表循环多维数组
在阅读了muiltiple stackoverflow的问题之后,我仍然不明白为什么我不能让它工作。我试图获取mysql表的所有行,并将它们放入多维数组中。我希望能找到一个简单的例子,但到目前为止我还没有完全理解 我在google和stack上看到的示例主要是关于解析或使其在页面上迭代。我试图让mysql行迭代到它们的数组中。我开始使用的示例代码与此类似:如何使用php从mysql表循环多维数组,php,mysql,arrays,api,multidimensional-array,Php,Mysql,Arrays,Api,Multidimensional Array,在阅读了muiltiple stackoverflow的问题之后,我仍然不明白为什么我不能让它工作。我试图获取mysql表的所有行,并将它们放入多维数组中。我希望能找到一个简单的例子,但到目前为止我还没有完全理解 我在google和stack上看到的示例主要是关于解析或使其在页面上迭代。我试图让mysql行迭代到它们的数组中。我开始使用的示例代码与此类似: // This will hopefully get all of the categories case 'get_all_categor
// 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\u row
所做的
i、 e
我尝试使用mysql\u fetch\u assoc
,然后执行foreach
循环?
我还尝试过做一个mysql\u fetch\u 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编码的(对不起,我应该解释一下)
尝试上面的代码,它将为json响应创建$result数组
Rest一切正常!你通常不想抑制错误,比如
@mysql\u query()
,你想解决它们。我可能遗漏了一些东西,但你尝试过:$results.=Array('body'…(注意=符号前的点)。@FranciscoPresencia我是个新手,但我的印象是,$go=@mysql\u query()这就像说如果围棋没有任何被抑制的错误,那么就这么做……或者我完全误解了@???@jeff我尝试了,但没有真正起到作用。我“我也不是100%确定。=是如何工作的,但我尝试过。此外,代码的第一部分可以从我的json输出中看到。我只是很难将所有表都放入一个数组中,我没有看到有人问这个问题(或者我问错了?!)实际上我不确定,它看起来太复杂了。我发现在开发/调试中显示错误和在生产中记录错误/异常要容易得多。从中我们可以看出,您不需要@
,因为它在出错时返回false,所以不会停止代码。请确保使用if(mysql\u query!==false)
,带有!==
,因为查询可能会返回0或“”,而不会返回false。此外,由于mysql_*正在被弃用,请尝试将代码更新到PDO。这显示我的最后一个条目。即{“body”:{“id”:“5”,“category_name”:“Sports”}而不是{“body”:{“id”:“1”,“categegegory_name”:“starwars”}有什么想法吗?这正是我所希望的!因此,我在最初的while循环中缺少的是I/I++并制作一个“数组”“数组”,如果我深入3个数组,它将是这样的['array1']['array2'][$I]['value']以$i作为数组并展开所述数组中的内容?确切地说,您只需要检查数组的索引…2D、3D…等等
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;
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;