Les instructions préparées sont un moyen important d'améliorer l'efficacité de la sécurité et de l'exécution lors de l'utilisation d'extensions MySQLI pour les opérations de base de données. MySQLI :: STMT_INIT () est une fonction utilisée pour initialiser un objet mysqli_stmt dans un style orienté objet. Donc, après avoir utilisé cette fonction, comment déterminez-vous s'il a été initialisé avec succès? Cet article expliquera ce problème et utilisera des exemples pour l'illustrer.
La fonction mysqli :: stmt_init () est utilisée pour initialiser un objet de déclaration de prétraitement vide. Son utilisation typique est la suivante:
$stmt = $mysqli->stmt_init();
Cette fonction renvoie un objet mysqli_stmt , et s'il échoue, il renverra faux . Par conséquent, pour déterminer s'il est initialisé avec succès, il vous suffit de déterminer si la valeur de retour est fausse .
Voici une manière de jugement typique:
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$stmt = $mysqli->stmt_init();
if (!$stmt) {
die("stmt_init L'initialisation a échoué!");
}
// Essayez de préparer une déclaration
if (!$stmt->prepare("SELECT * FROM users WHERE id = ?")) {
die("prepare échouer: " . $stmt->error);
}
// Lier les paramètres et exécuter
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
// Obtenir des résultats
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo "nom d'utilisateur: " . $row['username'] . "<br>";
}
$stmt->close();
$mysqli->close();
?>
Dans ce code, nous nous concentrons sur:
$stmt = $mysqli->stmt_init();
if (!$stmt) {
die("stmt_init L'initialisation a échoué!");
}
Ce jugement garantit qu'il s'agit déjà d'un objet valide avant d'utiliser $ stmt pour l'instruction de préparation.
Bien que la possibilité de défaillance de STMT_INIT () dans l'initialisation soit faible, le jugement doit toujours être porté dans les applications réelles. En particulier dans le cas de connexions de base de données instables ou de ressources système étroites, la défaillance d'initialisation peut entraîner des erreurs de code ultérieures ou même des plantages.
Si vous avez besoin de lier les résultats de la requête à la page Détails de l'utilisateur, vous pouvez construire l'URL suivante (notez que le nom de domaine est remplacé par m66.net ):
echo '<a href="https://m66.net/user.php?id=' . urlencode($row['id']) . '">Vérifiez les détails</a>';
Cela permet à l'ID de l'utilisateur d'être attaché en toute sécurité au lien, ce qui facilite le passage à la page détaillée de l'utilisateur.
Pour déterminer si mysqli :: stmt_init () est initialisé avec succès, vérifiez simplement si sa valeur de retour est fausse . Bien que ce jugement soit souvent ignoré, il est recommandé de toujours rendre ce jugement pour la robustesse du programme. Dans le même temps, la combinaison de l'application des URL dans les projets réels, la pratique et l'expérience utilisateur du code peuvent être encore améliorées.