Aktueller Standort: Startseite> Neueste Artikel> So führen Sie gespeicherte Prozeduren mit STMT_init aus

So führen Sie gespeicherte Prozeduren mit STMT_init aus

M66 2025-05-31

In PHP bietet die MySQLI -Erweiterung mehrere Möglichkeiten, mit einer Datenbank zu interagieren. Unter ihnen ist die MySQLI :: STMT_INIT -Funktion ein sehr nützliches Tool, mit dem eine vorbereitete Anweisung initialisiert werden kann. Mit dieser Funktion können Sie gespeicherte Prozeduren sicherer und effizienter ausführen und die zurückgegebenen Ergebnisse verarbeiten. In diesem Artikel wird ausführlich erklärt, wie Sie MySQLI :: STMT_INIT verwenden, um gespeicherte Prozeduren und Prozessergebnisse auszuführen.

1. Vorbereitung

Stellen Sie zunächst sicher, dass Ihre Datenbank gespeicherte Prozeduren erstellt hat. Angenommen, wir haben eine gespeicherte Prozedur mit dem Namen get_user_info , das den Namen und die E -Mail des Benutzers basierend auf der ID des Benutzers zurückgibt. Der SQL -Code für gespeicherte Prozeduren lautet wie folgt:

 DELIMITER $$

CREATE PROCEDURE get_user_info(IN user_id INT)
BEGIN
    SELECT name, email FROM users WHERE id = user_id;
END$$

DELIMITER ;

2. Implementierung von PHP -Code

In PHP werden wir MySQLI :: STMT_INIT verwenden, um ein Anweisungsobjekt zu initialisieren und gespeicherte Prozeduren über dieses Objekt auszuführen.

Schritt 1: Erstellen Sie eine Datenbankverbindung

Zunächst müssen Sie mithilfe der MySQLI -Erweiterung eine Verbindung zur Datenbank herstellen:

 <?php
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'test_db';

$mysqli = new mysqli($host, $username, $password, $database);

if ($mysqli->connect_error) {
    die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}
?>

Schritt 2: Initialisieren Sie das Anweisungsobjekt mit STMT_INIT

Die Funktion von MySQLI :: STMT_INIT wird verwendet, um ein MySQLI_STMT -Objekt zu initialisieren. In diesem Beispiel werden wir ein Anweisungsobjekt initialisieren, um die gespeicherte Prozedur get_user_info auszuführen.

 <?php
// Initialisieren Sie das Anweisungsobjekt
$stmt = $mysqli->stmt_init();

// Überprüfen Sie, ob die Initialisierung erfolgreich ist
if (!$stmt) {
    die('Aussagen können nicht initialisiert werden: ' . $mysqli->error);
}
?>

Schritt 3: Vorbereitende Verfahren vorbereiten und ausführen

Sobald das Anweisungsobjekt initialisiert wurde, können wir die Vorbereitung der SQL -Anweisung des gespeicherten Prozesses verwenden. Bei der Ausführung der gespeicherten Prozedur übergeben wir die Parameter (in diesem Beispiel die Benutzer -ID):

 <?php
// Bereiten Sie das gespeicherte Verfahren vor
$query = "CALL get_user_info(?)";
if (!$stmt->prepare($query)) {
    die('Vorbereitung des gespeicherten Verfahrens ist fehlgeschlagen: ' . $stmt->error);
}

// Binden Sie Parameter
$user_id = 1;  // Angenommen, wir möchten den Benutzer abfragen ID für 1 Information
$stmt->bind_param("i", $user_id); // "i" äußern integer Typ

// Speichernde Prozeduren ausführen
if (!$stmt->execute()) {
    die('Ausführung des gespeicherten Verfahrens ist fehlgeschlagen: ' . $stmt->error);
}
?>

Schritt 4: Holen Sie sich die Ergebnisse und verarbeiten Sie sie

Nach der Ausführung des gespeicherten Vorgangs wird die Ergebnismenge normalerweise zurückgegeben. Hier müssen wir das Ausführungsergebnis über die Get_Result -Methode erhalten und es verarbeiten.

 <?php
// Abfragenergebnisse erhalten
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    // Jede Datenzeile ausgeben
    while ($row = $result->fetch_assoc()) {
        echo "Name: " . $row['name'] . "<br>";
        echo "E-Mail: " . $row['email'] . "<br>";
    }
} else {
    echo "Es wurden keine relevanten Aufzeichnungen gefunden";
}
?>

Schritt 5: Anweisungen und Datenbankverbindungen schließen

Vergessen Sie schließlich nicht, das Anweisungsobjekt und die Datenbankverbindung zu schließen:

 <?php
$stmt->close();
$mysqli->close();
?>

3. Behandeln Sie Fehler in gespeicherten Prozeduren

In einer Produktionsumgebung ist es wichtig, die ordnungsgemäße Fehlerbehandlung sicherzustellen. Sie können den Fehler aufnehmen, indem Sie die Rückgabeteile von Methoden vorbereiten , ausführen und get_Result überprüfen. Darüber hinaus können Sie die Anweisung Try-Catch -Anweisung verwenden, um Ausnahmen zu erfassen, um sicherzustellen, dass das Programm bei einem Fehler anmutig beenden kann.

4. Zusammenfassung

Durch die Funktion MySQLI :: STMT_INIT können Sie gespeicherte Prozeduren sicher und effektiv ausführen und Funktionen über Parameterbindung und Ergebnissätze erhalten, um die zurückgegebenen Daten flexibel zu verarbeiten. Die Verwendung vorbereiteter Aussagen verhindert nicht nur die SQL -Injektion, sondern verbessert auch die Ausführungseffizienz. Hoffentlich kann dieser Artikel Ihnen helfen, MySQLI -Erweiterungen besser zu verstehen und zu verwenden, um gespeicherte Verfahren zu betreiben.