2017-01-31 2 views
-4

Zuerst entschuldigung für mein Englisch.OOP PHP geben Warnung: mysqli_fetch_query() erwartet Parameter 1 zu sein mysqli_result, boolean gegeben in

Hallo, ich bin ziemlich neu in PHP, und ich lerne es in OOP. Ich mache jetzt ein Arbeitsprojekt, das PHP benutzt.

Ich habe 3 PHP-Dateien erstellt, und ich möchte die Ausgabe von einer DB-Abfrage sehen.

Die Dateien sind db_connect.php, login.php und query.php.

Die query.php ist nur zum Speichern der Abfrage, so dass, wenn ich eine Abfrage schreiben möchte, ich nur eine Funktion innerhalb query.php aufrufen. Aber wenn ich es laufen, gibt es mir Warnung:

mysqli_fetch_assoc() erwartet Parameter 1 werden MySQLi_Result, boolean gegeben in ../query.php

Ich habe versucht, es zu beheben, aber es gibt mir noch einen Fehler object given oder null given neben diesem boolean given.

Irgendwelche Ideen, was ich falsch mache und Vorschlag, was ich tun soll?

By the way, das ist meine Datei:

db_connect.php

<?php 

class sql_con { 
    public $conn; 

    public function __construct() 
    { 
     $this_com = "localhost"; 
     $user = "root"; 
     $pass = "root"; 
     $db = "db"; 

     try { 
      $this->conn = mysqli_connect($this_com,$user,$pass,$db); 
      if (mysqli_connect_error()) 
       { 
        die("koneksi eror : ".mysqli_connect_errno()." = ".mysqli_connect_error()); 
        // exit(); 
       } 
     } 
     catch(Exception $e) { 
      echo $e . mysqli_connect_error(); 
     } 
    } 
} 


?> 

login.php

<?php 
require_once('db_connect.php'); 
require_once("query.php"); 


$str_query = "select * from "; 
$table  = "table"; 
$condition =" where user=$user and pass=$pass"; 

$conn = new db_connect(); 
$query = new query(); 
$result = $query->query_sql($conn->conn,$str_query,$condition,$table); 
$result = mysqli_fetch_assoc($query); 

echo $result; 

$sql_c = new sql_con(); 
mysqli_close($sql_c->conn); 

query.php

<?php 
require_once("db_connect.php"); 

class query { 
    var $query; 
    var $conn; 

    public function query_sql($conn, $string_query, $condition, $table) 
    { 
     $conn =new sql_con(); 
     $query = mysqli_query($conn,$string_query.$table.$condition); 

     return $query; 
    } 
} 
+2

erfordern 'require_once ("query.php");' und nicht 'require_once (" queri.php ");' –

+0

Entschuldigung für Tippfehler, korrigierte es, – randuwe

+1

Sie müssen 'mysqli' zu th sagen Zeilenausnahmen: http://stackoverflow.com/questions/15553496/new-mysqli-how-to-intercept-an-unable-to-connect-error oder fügen Sie weitere Fehlerbehandlung manuell hinzu. Dann wirst du feststellen, dass 'table' ein reserviertes Wort ist ... – jeroen

Antwort

-1

Für diejenigen, die Dateistruktur wie ich in OOP PHP haben, nach einigen Diskussionen in den Kommentar oben, und ich habe versucht, meinen Code zu beheben, und endlich funktioniert (zumindest für mich).

Das ist mein neuer Code:

login.php

<?php 
require_once('db_connect.php'); 
require_once("query.php"); 

$str_query = "select * from "; 
$table  = "table"; 
$condition =" where user=$user and pass=$pass"; 

$conn = new db_connect(); 
$query = new query(); 
$result = $query->query_sql($conn->conn,$str_query,$condition,$table); 
$row = mysqli_fetch_assoc($result); 

var_dump($row); 

$sql_c = new sql_con(); 
mysqli_close($sql_c->conn); 

query.php

require_once("db_connect.php"); 

class query { 
    var $query; 
    var $conn; 

    public function query_sql($conn, $string_query, $condition, $table) 
    { 
     $this->conn = $conn; 
     $query  = mysqli_query($conn,$string_query.$table.$condition); 

     return $query; 
    } 
} 
Verwandte Themen