PHP警告:mysqli_close()期望参数1是mysqli Linux

时间:2017-06-06 14:12:26

标签: php mysql linux ubuntu

我在我的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并显示所有表字段。

有人帮我解决了这个错误

感谢。

3 个答案:

答案 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,我无法发表评论。