我正在尝试使用$cat_id
循环一次以获取id
值的category
和$url
值,然后添加id
和对category
和$parent_cat_id
数组赋值$sub_cat_name
,然后循环刚刚添加到数组中的$parent_cat_id
值,以查找其id
和category
值并将它们添加到数组中,直到所有$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] = '&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 )
答案 0 :(得分:0)
如果我正确理解了这个问题,你基本上就是说循环只运行一次,但你想让它多次运行。
但是,请查看下面的代码(从您的代码中简化)。为清楚起见,我删除了大部分循环内容,以便您可以看到实际发生的事情......
<?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] = '&sub' . $i . '=' . $_GET['sub'.$i];
}
print_r($url);
/*
Array
(
[1] => &sub1=val_sub1
[2] => &sub2=val_sub2
[3] => &sub3=val_sub3
[4] => &sub4=val_sub4
)
*/
?>
如您所见,循环工作正常。所以要么...
您遇到的问题是因为数据库内容出现了严重错误而您的脚本在一次循环后崩溃(不太可能),或者
$ _GET参数只有一个'sub'值,所以实际上它应该只循环一次(可能),或者
也许我只是不明白你的问题以及我认为我的问题。