Трябва да го използвате така
<?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',
]);
Подготвените оператори се използват за дезинфекция на въведените ви данни и за да направите това, можете да използвате :foo
без всички единични кавички в SQL за свързване променливи, а след това в execute()
функция, която предавате в асоциативен масив от променливите, които сте дефинирали в SQL израза.
Можете също да използвате ?
вместо :foo
и след това предайте масив само от стойности за въвеждане по този начин;
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
VALUES (?, ?, ?)');
$statement->execute(['Bob', 'Desaunois', '18']);
И двата начина имат своите предимства и недостатъци. Аз лично предпочитам да свързвам имената на параметрите, тъй като ми е по-лесно за четене.