Exécuter des requêtes MySQL via des instructions préparées peut être un peu délicat lorsque vous travaillez avec PDO. Plongeons dans le problème présenté et découvrons la solution :
Dans le code fourni, l'instruction INSERT INTO est construite à l'aide de la méthode prepare(), qui prépare l'instruction mais ne l'exécute pas. Pour exécuter réellement la requête et insérer les données, la méthode execute() doit être appelée.
De plus, lors de l'utilisation d'instructions préparées avec PDO, il est essentiel d'utiliser des espaces réservés (par exemple, :name, :lastname) dans le Requête SQL au lieu d'intégrer directement les valeurs. Les espaces réservés vous permettent de lier les valeurs à l'instruction préparée ultérieurement. Cette approche améliore la sécurité en empêchant les vulnérabilités d'injection SQL.
Le code corrigé devrait ressembler à ceci :
$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); // Set error mode to exception $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES(:name, :lastname, :age)"); $statement->bindParam(':name', 'Bob'); $statement->bindParam(':lastname', 'Desaunois'); $statement->bindParam(':age', 18); $statement->execute();
En utilisant des espaces réservés et en liant les valeurs à l'aide de bindParam(), la requête est correctement exécutée et les données sont insérées dans la base de données. Les instructions préparées aident à empêcher l'injection SQL et à garantir 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!