2010-08-24 109 views
1

我想一次循环与$cat_id抓住其idcategory值的$url值,然后添加idcategory值的$parent_cat_id$sub_cat_name数组,然后循环的$parent_cat_id值只是添加到数组中以查找其值idcategory的值,并将它们添加到数组中,直到所有$url值已循环。但我只能得到第一个$url值循环,而不是其余的$url值循环可以有人帮我纠正这个问题?PHP和MySQL循环问题

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) 
+1

你究竟用'i Cam 2010-08-24 05:19:23

+0

因为我不知道有多少个子类别有'PHP_INT_MAX'只有多少子类别循环,因此它的完美。 – g4tv 2010-08-24 05:21:39

+0

此外,您是否可以编辑此代码,使其尽可能简单,同时仍能展现您遇到的问题?我不认为任何数据库的东西都与你的问题有关。 – Cam 2010-08-24 05:21:58

回答

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] = '&#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参数只有一个'sub'值,所以它实际上应该只是循环一次(可能)

  3. 也许我只是不明白你的问题,以及我认为我做的。

+0

我是试图抓住每个url $的parent_id – g4tv 2010-08-24 05:39:40

+0

@ g4tv:好的 - 这个怎么样:你能给我们介绍一些输出(例如print_r)吗?我们需要:**实际输出**(实际打印的是什么)和**期望的输出**(如果脚本按照你想要的方式工作,将会打印什么) – Cam 2010-08-24 05:41:51

+0

@ g4tv:啊。你确定你的数据库中有正确的行吗?你的代码看起来很好因为我可以看到 – Cam 2010-08-24 05:51:53