Frage

Hallo zusammen Ich versuche, eine Website zu konvertieren bereit mysql-Anweisungen zu verwenden, aber ich bin ein paar Probleme mit meinem Gebrauch von fetch_array () ersetzt werden.

Die Kommentare zu php.net eine Lösung anbieten, die ich dachte, sollte arbeiten würde, aber aus irgendeinem Grund, warum ich bin immer seltsam undefiniert konstante Fehler, wenn eine Funktion über call_user_func_array () aufrufen kann jemand vorschlagen, einen besseren Weg, es zu tun?

Hier ist die Funktion i im Moment bin mit. Ich habe es ein wenig nach unten für die Buchung hier (es ist Teil einer größeren Klasse, die zu kontrollieren usw. mysqli und Griffe Fehler erstreckt) dumbed so leid, wenn ich irgendwelche Fehler gemacht habe, kopieren und einfügen und es.

public static function stmt_bind_assoc(&$stmt, &$out) {
    $data = mysqli_stmt_result_metadata($stmt);
    $fields = array();
    $out = array();

    $fields[0] = $stmt;
    $count = 1;

    while($field = mysqli_fetch_field($data)) {
        $fields[$count] = &$out[$field->name];
        $count++;
    }
    call_user_func_array(mysqli_stmt_bind_result, $fields);
}
public function fetch_array($rawQuery) {
    $stmt = $this->prepare($rawQuery);
    $row = array();
    self::stmt_bind_assoc($stmt, $row);
    $result = $stmt->fetch();
    $stmt->free();
    return $result;
}

Die Fehler, die wir bekommen sind:

"Hinweis: Die Verwendung von undefiniert Konstante mysqli_stmt_bind_result - angenommen 'mysqli_stmt_bind_result'"

"Fatal error: Call to undefined Methode mysqli_stmt :: free ()"

Kann mir jemand helfen mit der Erklärung, warum ich diese Fehler bin immer und wie kann ich es beheben?

EDIT: Hier ist das Original Kommentar von php.net http : //www.php.net/manual/en/mysqli-stmt.fetch.php#82742

War es hilfreich?

Lösung

Der erste Fehler kommt aus Ihrer call_user_func_array Aussage. Sie müssen Anführungszeichen um den mysqli_stmt_bind_result, sonst PHP geht davon aus, es ist eine Konstante

Und es gibt keine free() Funktion in mysqli_stmt, Verwendung $stmt->free_result() statt.

Andere Tipps

 $servername = "localhost"; $username = "root"; $password = ""; $dbnam = "test";

 // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection if (mysqli_connect_errno()) {
 die("Connection failed: %s\n" . mysqli_connect_errno()); }

$stmt = mysqli_prepare($conn, "SELECT * FROM myguests") or
die(mysqli_error($conn));   mysqli_stmt_execute($stmt);

$data = mysqli_stmt_result_metadata($stmt);
$fields = array();
$out = array();

 $fields[0] = &$stmt;
 $count = 1;

 while($field = mysqli_fetch_field($data)) {
     $fields[$count] = &$out[$field->name];
     $count++;
 }

 call_user_func_array("mysqli_stmt_bind_result", $fields);
 while(mysqli_stmt_fetch($stmt))    print_r($out);

$stmt->close(); $conn->close();

Arbeiten groß auf mich, hoffe, es hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top