Maison >développement back-end >tutoriel php >Comment utiliser correctement les instructions préparées avec les requêtes PDO pour MySQL INSERT ?

Comment utiliser correctement les instructions préparées avec les requêtes PDO pour MySQL INSERT ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-24 22:43:15917parcourir

How to Properly Use Prepared Statements with PDO for MySQL INSERT Queries?

Exécuter des requêtes MySQL INSERT à l'aide d'instructions préparées avec PDO

Dans le domaine des objets de données PHP (PDO), des difficultés peuvent survenir lorsque vous tentez de exécuter des requêtes SQL via des instructions préparées. Un problème courant implique l'utilisation de l'instruction INSERT INTO pour ajouter des enregistrements à une base de données.

Considérez le code suivant :

$dbhost = "localhost";
$dbname = "pdo";
$dbusername = "root";
$dbpassword = "845625";

$link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword");

$statement = $link->prepare("INSERT INTO testtable(name, lastname, age)
        VALUES('Bob','Desaunois','18')");

$statement->execute();

Ce code tente d'insérer un nouvel enregistrement dans la table testtable dans un Base de données MySQL. Cependant, la base de données reste vide.

Pour résoudre ce problème, vous devez utiliser des requêtes paramétrées au lieu d'intégrer des valeurs directement dans l'instruction SQL. Les requêtes paramétrées utilisent des espaces réservés (?) ou des paramètres nommés (:parameter) pour représenter les valeurs, qui sont ensuite liées aux valeurs réelles lors de l'exécution. Cette approche empêche les attaques par injection SQL et garantit la validation des données.

La manière correcte d'utiliser les instructions préparées avec INSERT INTO est la suivante :

$dbhost = 'localhost';
$dbname = 'pdo';
$dbusername = 'root';
$dbpassword = '845625';

$link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword);
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
    VALUES (:fname, :sname, :age)');

$statement->execute([
    'fname' => 'Bob',
    'sname' => 'Desaunois',
    'age' => '18',
]);

En utilisant des requêtes paramétrées, vous protégez votre application contre entrée malveillante et assurez l’intégrité de vos 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