Lorsque vous utilisez l'extension MySQLI pour les opérations de base de données en PHP, MySQLI :: STMT_INIT et STORE_RESULT sont deux fonctions couramment utilisées et importantes qui peuvent nous aider à exécuter plus efficacement les requêtes SQL et à traiter l'ensemble de résultats. Cet article discutera de la façon d'utiliser MySQLI :: STMT_INIT pour implémenter les meilleures pratiques en combinaison avec la fonction store_result pour améliorer les performances et la maintenabilité du code.
MySQLI :: STMT_INIT est une fonction utilisée pour initialiser les instructions SQL. Il renvoie un objet MySQLI_STMT , qui peut être utilisé pour l'exécution de la requête SQL ultérieure. Grâce à cette fonction, nous pouvons préparer une instruction et lier les paramètres d'entrée avant l'exécution. L'utilisation de STMT_INIT est généralement la première étape du processus de requête de la base de données.
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$stmt = $mysqli->stmt_init();
if ($stmt === false) {
die("Failed to initialize statement");
}
Dans le code ci-dessus, nous créons d'abord un objet de connexion MySQLI $ MySQLI , puis initialisons un objet d'instruction $ STMT via STMT_INIT () , qui sera utilisé pour l'exécution ultérieure de la requête SQL.
La fonction de la fonction store_result est d'extraire les résultats de la requête du serveur MySQL dans PHP. Cela vous permet d'en faire plus lors du traitement des résultats de la requête. Cette fonction est généralement utilisée après une requête sélectionnée , ce qui permet aux résultats de la requête d'être stockés localement et vous pouvez accéder à ces résultats à plusieurs reprises.
$stmt->store_result();
Cette ligne de code stocke les résultats de la requête en mémoire et vous pouvez accéder aux résultats de la requête via la méthode Fetch après cela.
Afin de traiter les résultats de la requête plus efficacement, il est recommandé d'appeler Store_Result pour stocker le résultat défini en mémoire après la préparation de l'instruction de requête. Il y a plusieurs avantages à procéder:
Amélioration des performances : dans certains cas, l'utilisation de Store_Result peut éviter plusieurs lectures de la base de données et améliorer les performances.
Résultats d'accès multiples : Store_Result stocke tous les résultats dans la mémoire, vous permettant de traverser ces résultats plusieurs fois sans faire une demande à la base de données à chaque fois.
Gestion des erreurs : Store_Result déclenchera toutes les erreurs de requête potentielles pour vous assurer que vous pouvez attraper le problème dans le temps.
Supposons que nous devons exécuter une requête sélectionnée et sortir le résultat, et le code de meilleure pratique combinant mysqli :: stmt_init et store_result est le suivant:
// initialisationmysqliconnecter
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// initialisationstmtObjet
$stmt = $mysqli->stmt_init();
if ($stmt === false) {
die("Failed to initialize statement");
}
// Préparez la déclaration de requête
$query = "SELECT id, name, email FROM users WHERE status = ?";
// Déclarations de prétraitement
$stmt->prepare($query);
// Lier les paramètres
$status = 'active';
$stmt->bind_param("s", $status); // "s" exprimer string Paramètres de type
// Exécuter une requête
$stmt->execute();
// utiliserstore_resultStocker les résultats en mémoire
$stmt->store_result();
// Variables de résultat de liaison
$stmt->bind_result($id, $name, $email);
// Résultats de la requête de sortie
while ($stmt->fetch()) {
echo "ID: $id, Name: $name, Email: $email\n";
}
// Libérer les ressources
$stmt->free_result();
$stmt->close();
$mysqli->close();
Instruction d'initialisation utilisant STMT_INIT : Créez un nouvel objet d'instruction SQL via STMT_INIT pour préparer la préparation, la liaison et l'exécution ultérieures.
STORE_RESULT Améliore les performances : lorsque vous devez accéder plusieurs fois aux résultats de la requête, l'utilisation de Store_Result peut charger toutes les données en mémoire, en évitant de reprendre les données à chaque fois que vous interrogez.
Paramètres et résultats de liaison : Bind_param est utilisé pour lier les paramètres de requête, Bind_result est utilisée pour lier les résultats de la requête aux variables PHP pour la commodité des opérations suivantes.
Gestion des erreurs : combinée avec Store_Result , vous pouvez mieux prendre des erreurs dans le processus de requête et assurer la robustesse du code.