В случаях, когда запрос представляет собой фиксированную строку и не требует каких-либо программных переменных, можно безопасно использовать query()
для его запуска.
Вот пример из https://www.php.net/manual/en/pdo.query.php :
<?php
$sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
foreach ($conn->query($sql) as $row) {
print $row['name'] . "\t";
print $row['color'] . "\t";
print $row['calories'] . "\n";
}
В запросе нет PHP переменных. query()
достаточно, и он выполняет то же самое, что и prepare()
и execute()
.
Если вам нужно заменить PHP переменные на значения в SQL выражениях, вы должны использовать параметры:
$sql = 'SELECT name, colour, calories FROM fruit
WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql);
$sth->execute(array('calories' => 150, 'colour' => 'red'));
Вы можете обнаружить, что это чаще встречается в вашем приложении, чем выполнение фиксированного запроса.