Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php从mysql表循环多维数组_Php_Mysql_Arrays_Api_Multidimensional Array - Fatal编程技术网

如何使用php从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

在阅读了muiltiple 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\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;