Maison > base de données > tutoriel mysql > Pourquoi mes instructions préparées par PDO ne parviennent-elles pas à insérer des données dans MySQL ?

Pourquoi mes instructions préparées par PDO ne parviennent-elles pas à insérer des données dans MySQL ?

Barbara Streisand
Libérer: 2025-01-13 06:14:42
original
161 Les gens l'ont consulté

Why Are My PDO Prepared Statements Failing to Insert Data into MySQL?

Dépannage des insertions d'instructions préparées PDO dans MySQL

L'utilisation du PDO de PHP avec les instructions préparées par MySQL offre sécurité et efficacité, mais des problèmes d'insertion peuvent survenir. Ce guide aborde un problème courant : les insertions échouées malgré un code apparemment correct.

Le problème : base de données vide après une INSERT tentative

Examinons un scénario dans lequel un INSERT utilisant une instruction préparée ne remplit pas la base de données :

<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')");
$statement->execute();</code>
Copier après la connexion

Ce code semble fonctionnel, pourtant le testtable reste vide.

La solution : la liaison de paramètres

La solution implique de lier correctement les paramètres. Les instructions préparées par PDO nécessitent des espaces réservés, soit des paramètres nommés (:param), soit des points d'interrogation (?) dans la requête SQL. Ces espaces réservés sont ensuite renseignés avec des valeurs lors de la méthode execute().

Voici comment corriger le code en utilisant les deux méthodes :

<code class="language-php">// Using Named Parameters
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)');
$statement->execute(['fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18']);

// Using Question Mark Placeholders
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)');
$statement->execute(['Bob', 'Desaunois', '18']);</code>
Copier après la connexion

En utilisant la liaison de paramètres, vous garantissez que les données sont insérées en toute sécurité, atténuant ainsi les risques d'injection SQL et préservant l'intégrité des données. Les valeurs sont correctement substituées dans la requête lors de l'exécution.

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