Měli byste to používat takto
<?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',
]);
Připravené příkazy se používají k dezinfekci vašich vstupů a k tomu můžete použít :foo
bez jakékoli jednoduché uvozovky v rámci SQL k spojení proměnné a poté v execute()
funkce, kterou předáte v asociativním poli proměnných, které jste definovali v příkazu SQL.
Můžete také použít ?
místo :foo
a pak předat pole pouze hodnot, které se zadají takto;
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
VALUES (?, ?, ?)');
$statement->execute(['Bob', 'Desaunois', '18']);
Oba způsoby mají své výhody i nevýhody. Osobně preferuji svázat názvy parametrů, protože je pro mě snazší číst.