Maison >développement back-end >tutoriel php >Comment utiliser efficacement les instructions préparées par MySQLi pour améliorer la sécurité et l'efficacité de la base de données ?
Relevés préparés MySQL : un aperçu complet
Les relevés préparés MySQL offrent une sécurité et une efficacité améliorées pour les interactions avec les bases de données. Cependant, démarrer avec eux peut être difficile.
Erreur : utilisation de l'instruction non liée
Dans le code fourni, l'erreur provient de la tentative d'exécution d'une instruction préparée "$ stmt" sans lui lier de paramètres. La méthode "mysqli_stmt_prepare()" de MySQLi renvoie un objet représentant l'instruction préparée, mais la liaison des espaces réservés avec "mysqli_stmt_bind_param()" est une étape cruciale avant de l'exécuter.
Syntaxe de liaison d'instruction préparée :
$stmt->bind_param('data_type', $variable);
Dans cet exemple, les types de données sont 's' (chaîne) et 'i' (entier), suivis des variables PHP contenant les valeurs à insérer.
$name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
Une fois les paramètres liés, l'exécution peut continuer :
$stmt->execute();
Exemple complet
Voici un exemple complet couvrant la connexion, l'insertion et la sélection avec gestion des erreurs à l'aide de préparé déclarations :
connect_error) { die('Failed to connect: ' . $mysqli->connect_error); } // Insertion $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?, ?)"); $stmt->bind_param('si', $name, $age); $name = 'Bob'; $age = 30; $stmt->execute(); // Selection $stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?"); $stmt->bind_param('s', $name); $name = 'Bob'; $stmt->execute(); $result = $stmt->get_result(); // Fetch and display results while ($row = $result->fetch_assoc()) { printf("%s (%s)\n", $row['name'], $row['age']); } // Closing $stmt->close(); $mysqli->close(); ?>
En suivant ces directives, vous pouvez utiliser efficacement les instructions préparées en PHP avec MySQLi, améliorant ainsi la sécurité et l'efficacité de l'interaction avec la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!