a.php 文件
$sql="select.....";
$c=$mysqli->query($sql);while($r=$c->fetch_assoc()){
$a=$r[id];
$b=$r[name];
$c=$r[fenlei];
if($b=='guoji'){
 include 'b.php';
 b($a,$b,$c)
}
if($b=='guonei'){
 include 'c.php';
 c($a,$b,$c)
}
if($b=='guangdong'){
 include 'd.php';
 d($a,$b,$c)
}
}b.php文件function b($a,$b,$c){
  global $mysqli;
  $sql='select .....';
  获取内容...
  替换模版内容...
  得到变量 $a ,$b ,$c
  开始生成....
  include 'shengchengIndex.php';
  shengchengIndex($a,$b,$c)
}
c.php文件
[code=php]
function b($a,$b,$c){
  global $mysqli;
  $sql='select .....';
  获取内容...
  替换模版内容...
  得到变量 $a ,$b ,$c
  开始生成....
  include 'shengchengIndex.php';
  shengchengIndex($a,$b,$c)
}d.php文件
[code=php]
function b($a,$b,$c){
  global $mysqli;
  $sql='select .....';
  获取内容...
  替换模版内容...
  得到变量 $a ,$b ,$c
  开始生成....
  include 'shengchengIndex.php';
  shengchengIndex($a,$b,$c)
}b c d .php 三个文件单个传递变量过去函数,他是能完整执行生成的。如果通过a.php 的while 循环 则就麻烦了。只有最后一个能执行完整的,其他的都不执行,
虽然是不执行,但它能入库数据到库里,只是不能生成HTML而已。就最后一个能生成。

解决方案 »

  1.   

    如果函数 shengchengIndex 是定义于 shengchengIndex.php 中的
    那么第二轮循环将会报错!shengchengIndex 被重复定义了
      

  2.   


    A呀。版哥,我搞错了。shengchengIndex.php 都是不同文件的。
    例如
    函数 b 就引用 b.phpc.php 
    c()d.php
    d()这样的调用,不会被重复定义的了。当让也会有,在A.PHP里的WHILE循环里,第一次循环和第二次循环都是调用1个函数。
      

  3.   


    A呀。版哥,我搞错了。shengchengIndex.php 都是不同文件的。
    例如
    函数 b 就引用 b.phpc.php 
    c()d.php
    d()这样的调用,不会被重复定义的了。当让也会有,在A.PHP里的WHILE循环里,第一次循环和第二次循环都是调用1个函数。完全搞错了。
    b c d .php 三个文件 调用 shengchengindex.php 文件。这个文件的里的函数,就是个过程。完了就完了。
    重负被定义,是正常的事情,但不会同时被使用的哦。
      

  4.   

    你是在 while($r=$c->fetch_assoc()){ 循环里执行的
    你能确认 name 是唯一的吗?(只有3条记录?)include 'shengchengIndex.php'; 后,其中定义的 shengchengIndex 函数是不会消失的如果仅仅是个过程,那么就不能定义成函数
      

  5.   

    如果有重复定义的可能的话,你应该这样用:
    if (!function_exists('shengchengIndex')) {
    include 'shengchengIndex.php';
    }
    shengchengIndex($a,$b,$c)
    另外不见得是你的代码写在下面,就是最后执行,或许while第一次的循环就是走的
    $b=='guangdong' 这个分支
    而后面无论任何分支,都是会报重复定义错误