Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDO com INSERT INTO através de declarações preparadas


Você deveria estar usando assim
<?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',
]);

As instruções preparadas são usadas para limpar sua entrada e, para fazer isso, você pode usar :foo sem quaisquer aspas simples no SQL para vincular variáveis ​​e, em seguida, no execute() função que você passa em um array associativo das variáveis ​​que você definiu na instrução SQL.

Você também pode usar ? em vez de :foo e, em seguida, passe em uma matriz apenas os valores para entrada assim;
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
    VALUES (?, ?, ?)');

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

Ambas as formas têm suas vantagens e desvantagens. Pessoalmente, prefiro vincular os nomes dos parâmetros, pois é mais fácil para mim ler.