Mysql
 sql >> Database >  >> RDS >> Mysql

DOP con INSERT INTO tramite istruzioni preparate

Dovresti usarlo in questo modo

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

Le dichiarazioni preparate vengono utilizzate per disinfettare il tuo input e per farlo puoi utilizzare :foo senza tutte le virgolette singole all'interno dell'SQL da vincolare variabili, e poi in execute() funzione si passa in un array associativo delle variabili definite nell'istruzione SQL.

Puoi anche usare ? invece di :foo e quindi passare in un array solo dei valori da inserire in questo modo;

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

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

Entrambi i modi hanno i loro vantaggi e svantaggi. Personalmente preferisco associare i nomi dei parametri perché è più facile da leggere per me.