PHP函数第二次调用它时不起作用

时间:2015-03-11 20:17:27

标签: php mysql function

我有一个问题,我创建了一个将查询结果返回到组合框的函数,它工作正常,但是当我第二次调用它时它不起作用。

conexion.php

<?php
 $db = new mysqli('localhost', 'root', 'pass', 'table');
 $db->set_charset("utf8");
 if($db->connect_errno > 0){
    die('Cannot connect [' . $db->connect_error . ']');
 }
?>

consulta.php

<?php
class consulta{

public function get_combo($tabla,$nombre,$valor,$vista){


    require_once 'conexion.php';

    $sql ='SELECT * FROM '.$tabla; 

    if(!$result = $db->query($sql)){
        die('Ocurrio un error ejecutando el query [' . $db->error . ']');
    }
   $combo.=" <option value='0' selected disabled   class='combo'>$nombre</option>";
   while ($row =$result->fetch_assoc()) {
   $comboestado .=" <option value='".$row[$valor]."'>".$row[$vista]."</option>";

}
    $db->close();
    return $combo;

 }
}

?>

的index.php

<?php 

    include_once '../php/consulta.php';
    $consulta = new consulta();
    $comboState=$consulta->get_combo('state','State','id','name');
    $comboTown=$consulta->get_combo('town','Town','id','name');

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
 <select name="" id="state" class="form-group form-control">

    <?php echo $comboState; ?>

 </select>

 <select name="" id="town" class="form-group form-control">

    <?php echo $comboTown; ?>

 </select>
</body>
</html>

该功能第一次工作,但是当我添加第二次调用时,它不起作用,即使我使用相同的参数。

1 个答案:

答案 0 :(得分:1)

在第一次调用get_combo时,require_once会导致加载conexion.php,从而创建mysqli。但是,一旦get_combo函数退出,$ db变量超出范围并将被清除。

在第二次调用get_combo时,conexion.php文件没有再次加载,因此$ db不存在。