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 ?

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 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 03:59:09559parcourir

How to Effectively Use MySQLi Prepared Statements to Enhance Database Security and Efficiency?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn