Mysql
 sql >> Base de données >  >> RDS >> Mysql

PDO avec INSERT INTO via des instructions préparées

Vous devriez l'utiliser comme ça

<?php
$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 (:fname, :sname, :age)');

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

Les instructions préparées sont utilisées pour nettoyer votre entrée, et pour ce faire, vous pouvez utiliser :foo sans tous les guillemets simples dans le SQL pour lier variables, puis dans le execute() fonction que vous transmettez dans un tableau associatif des variables que vous avez définies dans l'instruction SQL.

Vous pouvez également utiliser ? au lieu de :foo puis passez un tableau contenant uniquement les valeurs à saisir comme suit ;

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

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

Les deux manières ont leurs avantages et leurs inconvénients. Personnellement, je préfère lier les noms des paramètres car c'est plus facile à lire pour moi.