Anda harus menggunakannya seperti itu
<?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',
]);
Pernyataan yang disiapkan digunakan untuk membersihkan input Anda, dan untuk melakukannya Anda dapat menggunakan :foo
tanpa tanda kutip tunggal dalam SQL untuk mengikat variabel, dan kemudian di execute()
fungsi yang Anda berikan dalam larik asosiatif dari variabel yang Anda definisikan dalam pernyataan SQL.
Anda juga dapat menggunakan ?
bukannya :foo
dan kemudian berikan array hanya nilai untuk input seperti itu;
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
VALUES (?, ?, ?)');
$statement->execute(['Bob', 'Desaunois', '18']);
Kedua cara tersebut memiliki kelebihan dan kekurangan masing-masing. Saya pribadi lebih suka untuk mengikat nama parameter karena lebih mudah bagi saya untuk membaca.