PHP & MySQL 循环问题

标签 php mysql

我正在尝试使用 $cat_id 循环一次以获取 $url< 的 idcategory 值,然后将 idcategory 值添加到 $parent_cat_id$sub_cat_name 数组中,然后循环刚刚添加到数组中的 $parent_cat_id 值,找到它的 idcategory 值并将它们添加到数组中,直到所有的 $url 值已循环。但我只能让第一个 $url 值循环,而不能循环其余的 $url 值有人可以帮我解决这个问题吗?

PHP 代码。

$parent_cat_id = array();
$sub_cat_name = array();
$cat_id = 23;

for ($i = 1; isset($_GET['sub'.$i]); ++$i) {
    $url[$i] = '&#038;sub' . $i . '=' . $_GET['sub'.$i];
    if(isset($cat_id)){
        $dbc = mysqli_query($mysqli, "SELECT id, category FROM categories WHERE url = '" . $url[$i] . "' AND parent_id = '" . $cat_id . "'");
        if (!$dbc) {
            print mysqli_error($mysqli);
        }  else {
            while($row = mysqli_fetch_array($dbc)){ 
                $parent_cat_id[] = $row['id'];
                $sub_cat_name[] = $row['category'];
            }
        }   
    } else {
        $dbc = mysqli_query($mysqli, "SELECT id, category FROM categories WHERE url = '" . $url[$i] . "' AND parent_id = '" . $parent_cat_id[$i] . "'");
        if (!$dbc) {
            print mysqli_error($mysqli);
        }  else {
            while($row = mysqli_fetch_array($dbc)){ 
                $parent_cat_id[] = $row['id'];
                $sub_cat_name[] = $row['category'];
            }
        }
    }
}

当前输出。

$parent_cat_id Array ( [0] => 77 )

$sub_cat_name Array ( [0] => A1 )

预期输出。

$parent_cat_id Array ( [0] => 77 [1] => 78 [2] => 97 [3] => 100 )

$sub_cat_name Array ( [0] => A1 [1] => A2 [2] => B4 [3] => CD )

最佳答案

如果我对问题的理解正确,你基本上是在说循环只运行一次,但你希望它运行多次。

不过,请查看下面的代码(根据您的代码进行了简化)。为清楚起见,我删除了循环的大部分内容,以便您可以看到实际发生了什么......

<?php
    $_GET=array('sub1'=>'val_sub1','sub2'=>'val_sub2','sub3'=>'val_sub3','sub4'=>'val_sub4');
    print_r($_GET);
    /*
    Array
    (
        [sub1] => val_sub1
        [sub2] => val_sub2
        [sub3] => val_sub3
        [sub4] => val_sub4
    )
    */

    $url=array();

    for ($i = 1;isset($_GET['sub'.$i]); $i++) {
        $url[$i] = '&#038;sub' . $i . '=' . $_GET['sub'.$i];
    }

    print_r($url);
    /*
    Array
    (
        [1] => &#038;sub1=val_sub1
        [2] => &#038;sub2=val_sub2
        [3] => &#038;sub3=val_sub3
        [4] => &#038;sub4=val_sub4
    )
    */
?>

如您所见,循环工作正常。所以要么...

  1. 您遇到的问题是因为数据库出现严重错误,您的脚本在一个循环后崩溃(不太可能),或者

  2. $_GET 参数只有一个“子”值,因此它实际上应该只循环一次(可能),或者

  3. 也许我只是没有像我想的那样理解您的问题。

关于PHP & MySQL 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553741/

相关文章:

php - 在 PHP 中的 zoho api v2 中插入记录

php - wp_options 的 option_value 太长

php - 在 WooCommerce 管理订单列表的自定义列中显示每个订单项目的库存数量

java - 找不到 jdbc 的驱动程序(仅在 servlet 上)

mysql - 如何在MYSQL数据库的多对多表中插入和选择数据

mysql - 如果另一个数据库2中存在同名的另一个表,Hibernate无法在数据库1中自动创建表

php - 如何为 Centos 安装 php-mysqli 包

php - 访问html中的mysql值通过jquery发送到php文件

php - CakePHP 3.1 不会保存简单的 hasMany 关系

php - 生成具有预定义长度的随机数 PHP