2017-06-06 1 views
-2

私のubuntuではPHPの検索エンジンで作業していますが、mysql DBとの単純な接続ですが、/ var/log/apache2/errorにこのエラーがあります。ログPHP警告:mysqli_close()は、mysqliのLinuxになることを期待しています。

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

var_dump $ conと返されるものを参照 – ThisGuyHasTwoThumbs

+0

変数スコープのほかに、クエリは失敗し、以下の(すでに与えられた)回答によって選択されませんでした。そのため、あなたのコードはエラー処理に向かいます。 –

+0

あなたは 'global $ conexion;でも間違った変数を使用しています。 –

答えて

0

変数$ conが)関数conectar(のためにローカルであるので、文句を言わないあなたが

return $con; 

として機能を終了することができ、コードの残りの部分のために見ることが、あなたのようにそれを呼び出すとき:

conectar(); 

変更を:次に

$con = conectar(); 

すべてが正常に動作するはずです。

0

$con変数は、関数conectar()のローカル変数なので、関数desconectar()ではアクセスできません。それは私が原因50未満の評判にコメントを書くカント

mysqli_close($resultado); 

で試してみてください

$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); 
} 
+0

'global $ conexion;'と接続変数を見てください。あなたはまた何かを逃した。 –

+0

@ Fred-ii-ありがとう、私の答えは –

-1

としてボット機能にアクセスできるようになりますので、それをグローバルにします。

+0

あなたはかなりのものを逃した更新しました。 –

関連する問題