2016-06-18 8 views
1

Also, ich habe die folgende Funktion:PHP - vorbereitete Anweisungen führen als Objekt

private function getUserData($user_nickname) 
{ 
    if ($this->databaseConnection()) { 

     $stmt1=$this->dbh->prepare('SELECT * FROM users WHERE nickname = ?'); 
     $stmt1->bind_param('s', $user_nickname); 
     $stmt1->execute(); 

     return $stmt1->fetch_object(); 
    } 
    else { 
     return false; 
    } 
} 

Und bekomme ich folgende Fehlermeldung: Fatal error: Uncaught Fehler: Aufruf der undefinierten Methode mysqli_stmt :: fetch_object()

habe ich ein wenig Forschung, und ich finde nicht jedes Objekt in mysqli_stmt http://php.net/manual/en/class.mysqli-stmt.php

ist es bedeutet holen, wenn ich vorbereitete Anweisungen verwenden, kann ich nicht Ergebnis als Objekt verwenden kann? Ich möchte wirklich, dass es als Objekt funktioniert.

P.S. Ich benutze mysqli.

+0

Sie sollten in der Lage sein, etwas zu tun, wie '$ result = $ stmt1-> get_result schreiben kann(); return $ result-> fetch_object() 'nach dem' execute', da 'fetch_object()' Teil des mysqli_result ist. http://php.net/manual/en/mysqli-result.fetch-object.php –

Antwort

2

Mysqli ist keine sehr nützliche API.

Sie können versuchen, get_result() zu verwenden, aber es könnte auf Ihrem System nicht verfügbar sein.

Lassen Sie mich schlagen Sie PDO verwenden anstelle von mysqli:

private function getUserData($user_nickname) 
{ 
    $stmt = $this->dbh->prepare('SELECT * FROM users WHERE nickname = ?'); 
    $stmt->execute([$user_nickname]); 
    return $stmt->fetch(PDO::FETCH_OBJ); 
} 

Neben anderen Vorteilen über mysqli können PDO Rückkehr nicht nur ein anonymer stdObject aber can create an instance of an existing class, Parameter übergeben Konstruktor. Sprich, wenn Sie eine User Klasse haben, können Sie

private function getUserData($user_nickname) 
{ 
    $stmt = $this->dbh->prepare('SELECT * FROM users WHERE nickname = ?'); 
    $stmt->execute([$user_nickname]); 
    return $stmt->fetchObject('User'); 
} 
+0

Sieht aus wie mein Beitrag ein Duplikat hat und ich fand die Antwort dort: http://stackoverflow.com/questions/1976433/is- es-möglich-zu-verwenden-mysqli-fetch-object-with-a-prepared-Anweisung. Und ja, Sie können get_result() verwenden –

Verwandte Themen