Maison >développement back-end >tutoriel php >Comment puis-je utiliser correctement les instructions préparées avec INSERT INTO en PHP ?

Comment puis-je utiliser correctement les instructions préparées avec INSERT INTO en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-02 11:24:12646parcourir

How Can I Properly Use Prepared Statements with INSERT INTO in PHP?

Incorporation d'instructions préparées avec INSERT INTO

En parcourant les profondeurs labyrinthiques de PHP : Data Objects, une énigme déroutante surgit lors de la tentative d'exécution de MySQL requêtes utilisant des instructions préparées, spécifiquement pour les opérations INSERT INTO. Considérez l'extrait de code suivant :

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

$statement->execute();

Malgré le respect de la prétendue méthode prescrite, la base de données reste obstinément désolée. Explorons les éléments manquants qui ont entravé notre progression.

La clé pour libérer le potentiel des instructions préparées pour les requêtes INSERT INTO réside dans la liaison de paramètres, une technique qui permet l'intégration sécurisée et dynamique des valeurs dans le Instruction SQL. Ceci est réalisé en incorporant des espaces réservés dans la requête et en fournissant ensuite les valeurs correspondantes sous forme de tableau associatif lors de l'exécution.

Observez le code révisé :

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

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

Notez la présence de noms de paramètres, ' :fname', ':sname' et ':age', dans la requête. Ceux-ci servent d'espaces réservés pour les valeurs réelles, qui sont ensuite fournies sous forme de tableau associatif dans la fonctionexecute().

Vous pouvez également utiliser le '?' syntaxe comme espaces réservés et transmettre un tableau de valeurs sans spécifier les noms des paramètres :

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

$statement->execute(['Bob', 'Desaunois', '18']);

Les deux approches offrent leurs avantages et inconvénients respectifs. L'utilisation de paramètres nommés améliore la lisibilité, tandis que le « ? » la syntaxe simplifie le processus de liaison des valeurs. Cependant, en fin de compte, le choix entre les deux est une question de préférence personnelle.

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