Maison >base de données >tutoriel mysql >Pourquoi ma déclaration préparée par PDO ne parvient-elle pas à insérer des données dans MySQL ?
PHP PDO : insertions MySQL sécurisées et efficaces avec des instructions préparées
Les instructions préparées sont essentielles pour une interaction de base de données sécurisée et efficace en PHP à l'aide de PDO (PHP Data Objects). Cependant, des pièges courants peuvent conduire à des échecs d’insertion. Examinons un problème typique et sa solution.
Le problème : une approche incorrecte
Considérez cet extrait de code apparemment correct tentant une insertion MySQL via une instruction préparée :
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
Ce code, bien que syntaxiquement valide, échoue souvent. La base de données reste inchangée.
La solution : une liaison de paramètres appropriée
L'approche correcte utilise des espaces réservés nommés ou non pour lier en toute sécurité les paramètres :
Utilisation d'espaces réservés nommés :
<code class="language-php">$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ 'fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18', ]);</code>
Cette version utilise des espaces réservés nommés (:fname
, :sname
, :age
) et un tableau associatif pour lier les valeurs. Il s'agit de l'approche recommandée pour sa clarté et sa lisibilité.
Utilisation d'espaces réservés sans nom :
Vous pouvez également utiliser des espaces réservés sans nom (?
) :
<code class="language-php">$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);</code>
Ici, l'ordre des valeurs dans le tableau doit correspondre strictement à l'ordre des espaces réservés dans l'instruction SQL.
Pourquoi cela fonctionne : prévenir l'injection SQL et améliorer les performances
Les relevés préparés offrent des avantages significatifs :
En utilisant correctement les instructions préparées avec liaison de paramètres, vous garantissez des interactions de base de données sécurisées et optimisées dans vos applications PHP.
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!