#php #pdo
#php #pdo
Вопрос:
В PHP с PDO, какими символами мы ограничены в использовании. Я пытался посмотреть в документации и онлайн, но безрезультатно.
Я нашел сообщение, в котором пользователь использовал дефис в имени, что привело к прерыванию запроса. Я пишу функцию, которая динамически генерирует эти имена, и поскольку дефисы не являются nos, мне было интересно, существует ли список альтернатив.
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
Итак, в этом примере какие символы были бы разрешены в строке ‘:color’?
Комментарии:
1. Я не уверен, в чем конкретно заключаются ограничения, но буквенные символы и подчеркивания никогда меня не подводили 🙂
Ответ №1:
Самый простой способ узнать, это просто проверить исходный код:
BINDCHR = [:][a-zA-Z0-9_] ;
Вы можете использовать буквенно-цифровые символы подчеркивание.
Комментарии:
1. Просто взглянув на исходный код, я вижу там ошибки … выражение их комментария неверно.
--
за ними должен следовать пробел, а не просто любой символ без разрыва строки.2. Не изменилось для PHP 5.6 , если кому-то интересно.
Ответ №2:
Если я правильно прочитал исходный код анализатора SQL PDO, это буквенно-цифровые символы плюс подчеркивание.