sql >> Base de Datos >  >> RDS >> Mysql

PDO con INSERT INTO a través de declaraciones preparadas

Deberías usarlo así

<?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',
]);

Las declaraciones preparadas se utilizan para desinfectar su entrada y, para hacerlo, puede usar :foo sin cualquier comilla simple dentro del SQL para enlazar variables, y luego en execute() función que pasa en una matriz asociativa de las variables que definió en la instrucción SQL.

También puede usar ? en lugar de :foo y luego pase una matriz de solo los valores para ingresar así;

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

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

Ambas formas tienen sus ventajas y desventajas. Personalmente, prefiero vincular los nombres de los parámetros, ya que me resulta más fácil leerlos.