Du burde bruge det sådan
<?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',
]);
Forberedte udsagn bruges til at rense dit input, og for at gøre det kan du bruge :foo
uden alle enkelte anførselstegn i SQL'en for at binde variabler, og derefter i execute()
funktion, du sender i et associativt array af de variable, du definerede i SQL-sætningen.
Du kan også bruge ?
i stedet for :foo
og indsend derefter et array af kun værdierne til input som sådan;
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
VALUES (?, ?, ?)');
$statement->execute(['Bob', 'Desaunois', '18']);
Begge måder har deres fordele og ulemper. Jeg foretrækker personligt at binde parameternavnene, da det er nemmere for mig at læse.