Maison > développement back-end > tutoriel php > Comment utiliser efficacement les instructions préparées dans MySQL avec PHP ?

Comment utiliser efficacement les instructions préparées dans MySQL avec PHP ?

Linda Hamilton
Libérer: 2025-01-02 16:14:39
original
172 Les gens l'ont consulté

How to Effectively Use Prepared Statements in MySQL with PHP?

Premiers pas avec les instructions préparées dans MySQL

Les instructions préparées sont un outil essentiel pour écrire des requêtes SQL sécurisées et efficaces. Dans cet article, nous allons explorer comment utiliser les instructions préparées avec mysqli, l'extension MySQLi en PHP.

Erreur de syntaxe : exécution non-objet

L'erreur que vous rencontrez , "Erreur fatale : appel à une fonction membre exécuter() sur un non-objet", indique généralement que la variable $stmt n'est pas correctement initialisée ou qu'il s'agit d'un objet. Voici comment le corriger :

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
Copier après la connexion

Assurez-vous d'avoir une connexion valide à la base de données avant de continuer.

Paramètres de liaison

Relevés préparés utilisez des marqueurs de paramètres (par exemple ?) pour représenter les valeurs d’entrée. Ces valeurs doivent être liées aux variables PHP avant d'exécuter l'instruction. Voici un exemple :

$name = 'one';
$age = 1;
$stmt->bind_param('si', $name, $age);
Copier après la connexion

Dans cet exemple, nous lions le paramètre name sous forme de chaîne ('s') et le paramètre age sous forme d'entier ('i').

Exécuter l'instruction

Une fois les paramètres liés, vous pouvez exécuter l'instruction préparée instruction :

$stmt->execute();
Copier après la connexion

Gestion des erreurs

Les instructions préparées offrent une meilleure gestion des erreurs que les requêtes SQL directes. Utilisez la méthode mysqli_stmt::error pour récupérer les messages d'erreur :

if ($stmt->error) {
    die("Error: " . $stmt->error);
}
Copier après la connexion

Exemple complet

Voici un exemple complet d'insertion, de sélection et de gestion des erreurs :

// Establish connection
$mysqli = new mysqli("localhost", "root", "root", "test");

// Prepare and bind parameters
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
$stmt->bind_param('si', $name, $age);

// Insert multiple rows
$name = 'one';
$age = 1;
$stmt->execute();
$name = 'two';
$age = 2;
$stmt->execute();

// Prepare and execute select statement
$stmt = $mysqli->prepare("SELECT * FROM users");
$stmt->execute();

// Bind result
$result = $stmt->get_result();

// Process results
while ($row = $result->fetch_assoc()) {
    echo $row['name'] . ", " . $row['age'] . "
\n"; } // Handle errors if ($stmt->error) { die("Error: " . $stmt->error); }
Copier après la connexion

En utilisant des instructions préparées, vous pouvez empêcher les attaques par injection SQL et écrire du SQL plus robuste et plus efficace. requêtes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal