微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将多个结果放在一个数组中

我已经在sql中编写了代码,因为我只想了解这个概念.完成后我会将其更改为sqli / pdo.所以请忽略sql方法,并帮助我解决问题

我需要根据特定的catid列出所有vendorname.为此,我有2个表子类别和vendorSubCat.我试图通过首先根据catid获取subcatid(即id from subcategory table)来链接这两个表,然后根据从上一个表中选择的subcatid(来自vendorSubCat表)显示供应商名称.

表视图子类别

id  subcatname  subcatdesc  catname catid

表视图vendorSubCat

vendorname  vendorid  subcatid  

<?PHP
ob_start();
require_once('config.PHP');
$catid = $_REQUEST['catid'];
$sql1 = "SELECT * FROM subcategory where catid='" . $catid . "'";
$result1 = MysqL_query($sql1);
while ($row = MysqL_fetch_array($result1)) {
    $myid = $row['id'];
    if (sql1 != '0') {
        $productt = MysqL_query("select * from vendorSubCat where id = '" . $myid . "' ");
        $posts = array();
        if (MysqL_num_rows($productt)) {
            while ($post = MysqL_fetch_assoc($productt)) {
                $posts[] = $post;
            }
            header('Content-type: application/json');
            echo stripslashes(json_encode(array('list' => $posts)));
        } else {
            header('Content-type: application/json');
            echo stripslashes(json_encode(array('list' => 'No productlist')));
        }
    }
}
?>

尽管代码工作正常,但结果显示在不同的数组中.它显示了这样的结果

{"list":[{"id":"1","vendorname":"Marzoogah","vendorid":"1","subcatid":"4"}]}{"list":[{"id":"2","vendorname":"Zee Zone","vendorid":"2","subcatid":"4"}]}{"list":[{"id":"3","vendorname":"Zee Zone","vendorid":"2","subcatid":"7"}]}{"list":[{"id":"4","vendorname":"????? ????????","vendorid":"3","subcatid":"4"}]}

我希望将所有结果放在一个数组中,即所有列表都应该放在一个列表中.每次显示新行时都不应显示“list”.任何帮助,将不胜感激

解决方法:

您无需立即回显结果:

echo stripslashes(json_encode(array('list' => $posts)));

而是将所有数据收集到一个数组:

$results = array();
//Your code
$results[] = array('list' => $posts);
//...
$results[] = array('list' => 'No product list');
//...
//And echo just one time in the end:
echo stripslashes(json_encode($results);

或类似的东西用于合并:

$results = array();
//Your code
$results = $results + $posts;
//...
$results = 'No product list';
//...
//And echo just one time in the end:
echo stripslashes(json_encode(array('list' => $results)));

此外,您可以在没有递归查询的情况下执行数据库请求;

就像是:

SELECT vsc.* FROM vendorSubCat vsc
INNER JOIN subcategory sc ON vsc.id=sc.id
WHERE sc.cat_id = 15

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐