我在我的ubuntu上使用PHP的搜索引擎工作,使用我的mysql数据库进行简单的连接,但是在/var/log/apache2/error.log中获取此错误
PHP Warning: mysqli_close() expects parameter 1 to be mysqli, null given in /var/www/html/search.php on line 67
这是我的剧本;
<?php
define('HOST_DB', 'localhost ');
define('USER_DB', 'root');
define('PASS_DB', '123456');
define('NAME_DB', 'Generic');
function conectar(){
global $conexion;
$con = mysqli_connect('localhost', 'root', '1q2w3e4r') or die("cannot connect server ");
#$conexion = mysql_connect(HOST_DB, USER_DB, PASS_DB)
#$conexion = mysqli_connect('localhost', 'root', '1q2w3e4r')
# $con = mysqli_connect('localhost', 'root', '1q2w3e4r')or die("cannot connect server ");
# or die ('NO SE HA PODIDO CONECTAR AL MOTOR DE LA BASE DE DATOS');
mysqli_select_db($con,'Genetec') or die ('NO SE ENCUENTRA LA BASE DE DATOS ' . NAME_DB);
#mysqli_select_db($con, 'Genetec') or die(mysqli_error($con));
#or die ('NO SE ENCUENTRA LA BASE DE DATOS ' . NAME_DB);
#or die ('NO SE ENCUENTRA LA BASE DE DATOS ' . mysqli_error());
}
function desconectar(){
global $conexion;
mysqli_close($con);
// mysqli_close($conexion);
//mysqli_close()
}
$text = '';
$registros = '';
if($_POST){
$busqueda = trim($_POST['buscar']);
$entero = 0;
if (empty($busqueda)){
$texto = 'Búsqueda sin resultados';
}else{
conectar();
mysqli_set_charset('utf8'); // mostramos la información en utf-8
// $sql = "SELECT * FROM inventarySPN WHERE id LIKE '%" .$busqueda. "%' ORDER BY id";
$sql = "SELECT * FROM SPN WHERE id LIKE '%" .$busqueda. "%' ORDER BY id";
$resultado = mysqli_query($sql); //Ejecución de la consulta
if (mysqli_num_rows($resultado) > 0){
$registros = '<p>HEMOS ENCONTRADO ' . mysqli_num_rows($resultado) . ' registros </p>';
while($fila = mysqli_fetch_assoc($resultado)){
$texto .= $fila['Genetec'] . '<br />';
}
}else{
$texto = "NO HAY RESULTADOS EN LA BBDD";
}
// mysqli_close($conexion);
mysqli_close($con);
}
}
?>
<!DOCTYPE html>
<html lang="es-ES">
<head>
<meta charset='utf-8'>
<head>
<body>
<h1>Buscador <a href="http://webreunidos.es" title="" target="_self"></a></h1>
<form id="buscador" name="buscador" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<input id="buscar" name="buscar" type="search" placeholder="Buscar aquí..." autofocus >
<input type="submit" name="buscador" class="boton peque aceptar" value="buscar">
</form>
<?php
echo $registros;
echo $texto;
?>
</body>
</html>
此引擎搜索id并显示所有表字段。
有人帮我解决了这个错误
感谢。
答案 0 :(得分:0)
您的$con
变量是函数conectar()
的本地变量,因此无法在函数desconectar()
中访问它。使它全局化,因此它可以在bot函数中访问
$con=null;
function conectar(){
$con = mysqli_connect('localhost', 'root', '1q2w3e4r') or die("cannot connect server ");
mysqli_select_db($con,'Genetec') or die ('NO SE ENCUENTRA LA BASE DE DATOS ' . NAME_DB);
}
function desconectar(){
mysqli_close($con);
}
答案 1 :(得分:0)
变量$ con是函数conectar()的局部变量,因此不会看到其余代码可以用
完成函数foobar-bucket2
然后当你把它称为:
return $con;
将其更改为:
conectar();
然后一切都应该正常工作。
答案 2 :(得分:-1)
尝试
mysqli_close($resultado);
由于声誉低于50,我无法发表评论。