Maison >développement back-end >tutoriel php >Pourquoi mes instructions préparées PDO ne parviennent-elles pas à s'INSÉRER dans MySQL ?

Pourquoi mes instructions préparées PDO ne parviennent-elles pas à s'INSÉRER dans MySQL ?

DDD
DDDoriginal
2024-11-24 13:38:12657parcourir

Why are my PDO Prepared Statements Failing to INSERT into MySQL?

Erreurs d'instructions préparées avec INSERT INTO dans PDO

Lors de la navigation dans les complexités de PDO, vous pouvez rencontrer des difficultés à utiliser des instructions préparées pour les requêtes MySQL. 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();

Malgré cette approche, votre base de données reste vide.

La solution réside dans l'utilisation appropriée des instructions préparées. Utilisez plutôt ce qui suit :

$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',
]);

Les instructions préparées fournissent une vérification des entrées. Utilisez les espaces réservés ':parameter' dans votre instruction SQL et transmettez un tableau associatif de ces paramètres dans la fonction 'execute'. Vous pouvez également utiliser « ? » des espaces réservés et transmettez un tableau de valeurs.

Les deux méthodes offrent des avantages et des inconvénients. La liaison des noms de paramètres améliore la lisibilité, tandis que cette dernière méthode simplifie le code.

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