2016-05-19 17 views
0

Ich war eine Benutzer-Datenbank Codierung, die eine statische Methode von find_all ruft eine Abfrage-Methode, die wiederum den gesamten Wert einer Datenbank zurück, aber ich finde Probleme dabei jedes Mal Wenn ich versuche, es aufzurufen, gibt es mir diesen Fehler, da mysqli_query() erwartet, dass Parameter 1 mysqli ist, String in C: \ xampp \ htdocs \ photogallery \ includes \ database.php in Zeile 20. Was soll ich tun? Hier ist der Code-Schnipsel User.phpPHP mysqli Abfrage erwartet Parameter 1 zu String

require_once("database.php"); 
class User{ 

public static function find_all(){ 
    global $database; 
    $sql= "select * from users"; 
    $result_set = $database->query($sql); 


return $result_set; 
    } 
    public static function find_by_id($id=0){ 
     global $database; 
     $result_set = $database->query("SELECT FROM users where id={$id}"); 
     $found = $database->fetch_array($result_set); 
     return $found; 
    } 
} 

database.php

public function query($sql){ 
echo $sql; 
$this->last_query = $sql; 
echo $result = mysqli_query($sql,$this->connection); 
$this->confirm_query($result); 
return $result; 


} 

public function confirm_query($result){ 
    if(!$result){ 
     die("Database query failed:".mysqli_error()); 
    } 
} 

und die index.php, wo der Code wird wie folgt aufgerufen:

<?php 
require_once("../includes/database.php"); 
require_once("../includes/user.php"); 

$q = User::find_all(); 


?> 

Jedes Mal, wenn der Fehler kommt, da mysqli_query erwartet, dass Parameter 1 mysqli ist, String in C: \ xampp \ htdocs \ photogallery \ includes \ database.php in Zeile 20. Helfen Sie mir bitte?

+0

Verwenden 'mysqli_query ($ this-> Verbindung, $ sql);' Erste Der Parameter ist 'connection variable' und der zweite Parameter' query variable'. – RJParikh

Antwort

1

Bei der Verwendung von mysqli in einem prozeduralen Stil ändern müssen, das erste Argument mysqli_query muss eine Verbindung sein Objekt

Von der offiziellen documentation:

mixed mysqli_query (mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ]) 

Sie müssen also die Reihenfolge der Argumente ändern, geht $this->connection erste und $sql geht Sekunde:

$result = mysqli_query($this->connection, $sql); 
+0

aber jetzt diese gibt mir einen anderen Fehler Catachable fatalen Fehler: Objekt der Klasse mysqli_result konnte nicht in String in C: \ xampp \ htdocs \ photogallery \ includes \ database.php in Zeile 20 –

+0

@MonuJoshi konvertiert werden, weil '$ Ergebnis' ist keine Zeichenfolge. Entfernen Sie das Echo – dimlucas

0

Gerade docs lesen:
gemischte

mysqli_query (mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ])  

Sie Ihre Argumente

mysqli_query($this->connection, $sql)

Verwandte Themen