"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment utiliser efficacement les instructions préparées dans MySQL avec PHP ?

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

Publié le 2024-12-21
Parcourir:486

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 (?,?)");

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

Paramètres de liaison

Les instructions préparées utilisent le paramètre des marqueurs (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);

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();

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);
}

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); }

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

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3