Heim >Datenbank >MySQL-Tutorial >Warum gibt meine vorbereitete mysqli-Anweisung „Aufruf einer Mitgliedsfunktion „execute()' für ein Nicht-Objekt' zurück?

Warum gibt meine vorbereitete mysqli-Anweisung „Aufruf einer Mitgliedsfunktion „execute()' für ein Nicht-Objekt' zurück?

DDD
DDDOriginal
2024-12-21 03:54:09483Durchsuche

Why Does My mysqli Prepared Statement Return

Vorbereitete MySQL-Anweisungen verwenden

Bei der Verwendung vorbereiteter Anweisungen mit MySQL ist es wichtig, die Parameter vor der Ausführung der Abfrage korrekt zu binden.

Fehler-Debugging

Die Der bereitgestellte Code stößt auf den Fehler „Aufruf einer Mitgliedsfunktion „execute()“ für ein Nicht-Objekt“, da keine Parameterbindung durchgeführt wurde. Gemäß der mysqli_prepare-Dokumentation müssen Parametermarkierungen vor der Ausführung mit mysqli_stmt_bind_param gebunden werden.

Vollständiges Beispiel mit Fehlerbehandlung:

Das Folgende ist ein vollständigeres Beispiel, das Folgendes enthält: Parameterbindung, Fehlerbehandlung und demonstriert das Einfügen und Abrufen von Daten mithilfe von Prepared Anweisungen:

<?php

// Establish database connection
$mysqli = new mysqli("localhost", "root", "root", "test");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit;
}

// Prepare insert statement
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
if (!$stmt) {
    echo "Error preparing statement: " . $mysqli->error;
    exit;
}

// Bind parameters and insert one row
$name = 'One';
$age = 1;
$stmt->bind_param('si', $name, $age);
$stmt->execute();
if ($stmt->errno) {
    echo "Error executing insert: " . $stmt->error;
    exit;
}

// Insert another row with different values
$name = 'Two';
$age = 2;
$stmt->bind_param('si', $name, $age);
$stmt->execute();
if ($stmt->errno) {
    echo "Error executing insert: " . $stmt->error;
    exit;
}

// Prepare select statement
$stmt = $mysqli->prepare("SELECT name, age FROM users");
if (!$stmt) {
    echo "Error preparing statement: " . $mysqli->error;
    exit;
}

// Execute select statement and fetch results
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "{$row['name']} is {$row['age']} years old<br>";
    }
}

// Close statement and connection
$stmt->close();
$mysqli->close();
?>

Dieser Code behandelt Fehler während der Vorbereitung, Ausführung und des Ergebnisabrufs von Anweisungen und bietet eine robustere Demonstration der Verwendung vorbereiteter Anweisungen.

Das obige ist der detaillierte Inhalt vonWarum gibt meine vorbereitete mysqli-Anweisung „Aufruf einer Mitgliedsfunktion „execute()' für ein Nicht-Objekt' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn