我有一个问题,我创建了一个将查询结果返回到组合框的函数,它工作正常,但是当我第二次调用它时它不起作用。
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>
该功能第一次工作,但是当我添加第二次调用时,它不起作用,即使我使用相同的参数。
答案 0 :(得分:1)
在第一次调用get_combo时,require_once会导致加载conexion.php,从而创建mysqli。但是,一旦get_combo函数退出,$ db变量超出范围并将被清除。
在第二次调用get_combo时,conexion.php文件没有再次加载,因此$ db不存在。