Position actuelle: Accueil> Derniers articles> Explication détaillée de l'utilisation de stmt_init et fetch () en conjonction avec

Explication détaillée de l'utilisation de stmt_init et fetch () en conjonction avec

M66 2025-05-16

Lorsque vous utilisez PHP pour faire fonctionner une base de données MySQL, l'extension MySQLI fournit une interface orientée objet qui nous permet d'exécuter des instructions SQL plus solidement et structurées. Surtout lors de l'exécution des instructions préparées, MySQLI :: STMT_INIT et Fetch () sont deux fonctions très critiques.

Cet article introduira en détail comment utiliser mysqli :: stmt_init () pour initialiser les objets d'instruction et combiner la méthode fetch () pour obtenir des données en toute sécurité et efficacement dans la base de données.

1. Qu'est-ce que mysqli :: stmt_init ?

mysqli :: stmt_init () est une méthode de la classe mysqli , utilisée pour initialiser un objet d'instruction ( mysqli_stmt ). Cet objet peut ensuite préparer des instructions SQL via la méthode Pread () . L'avantage est qu'il peut réutiliser les instructions et lier les paramètres pour améliorer la sécurité et l'efficacité du code.

Exemple:

 $mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$stmt = $mysqli->stmt_init();

2. Préparer et exécuter les instructions SQL

Après avoir créé un objet d'instruction avec stmt_init () , préparez l'instruction de requête en utilisant PREPEL () et liez les paramètres à l'aide de bind_param () .

 $query = "SELECT id, name, email FROM users WHERE status = ?";
if ($stmt->prepare($query)) {
    $status = 'active';
    $stmt->bind_param("s", $status);
    $stmt->execute();
}

Astuce: le premier paramètre "S" de Bind_param signifie que le type de paramètre est une chaîne ( chaîne ).

3. Liez les résultats et utilisez fetch () pour extraire les données

Après avoir exécuté l'instruction, nous devons utiliser bind_result () pour lier la colonne du résultat de la requête à la variable, puis nous pouvons utiliser la méthode fetch () pour extraire la ligne de données par ligne.

 $stmt->bind_result($id, $name, $email);

while ($stmt->fetch()) {
    echo "utilisateurID: $id<br>";
    echo "utilisateur名: $name<br>";
    echo "Mail: $email<br><br>";
}

4. Exemple complet

Voici un programme complet d'échantillons PHP:

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$stmt = $mysqli->stmt_init();
$query = "SELECT id, name, email FROM users WHERE status = ?";

if ($stmt->prepare($query)) {
    $status = 'active';
    $stmt->bind_param("s", $status);
    $stmt->execute();
    $stmt->bind_result($id, $name, $email);

    echo "<h2>活跃utilisateur列表:</h2>";
    while ($stmt->fetch()) {
        echo "<div>";
        echo "<strong>ID:</strong> $id<br>";
        echo "<strong>Nom:</strong> $name<br>";
        echo "<strong>Mail:</strong> <a href='mailto:$email'>$email</a><br>";
        echo "<a href='https://m66.net/user/profile.php?id=$id'>Vérifiez les détails</a>";
        echo "</div><hr>";
    }

    $stmt->close();
} else {
    echo "SQL Le prétraitement a échoué: " . $stmt->error;
}

$mysqli->close();
?>