我正在尝试使用 $cat_id
循环一次以获取 $url< 的
值,然后将 id
和 category
值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 )
最佳答案
如果我对问题的理解正确,你基本上是在说循环只运行一次,但你希望它运行多次。
不过,请查看下面的代码(根据您的代码进行了简化)。为清楚起见,我删除了循环的大部分内容,以便您可以看到实际发生了什么......
<?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 参数只有一个“子”值,因此它实际上应该只循环一次(可能),或者
也许我只是没有像我想的那样理解您的问题。
关于PHP & MySQL 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553741/