В PHP с PDO, какие символы мы ограничиваем использованием. Я пробовал смотреть в документации и в Интернете, но безрезультатно.
Я нашел сообщение, в котором пользователь использовал hypen в имени, которое нарушило запрос. Я пишу функцию, которая динамически генерирует эти имена, и поскольку дефисы не являются 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'?
Самый простой способ узнать, просто проверить исходный код:
https://github.com/php/php-src/blob/master/ext/pdo/pdo_sql_parser.re#L49 :
BINDCHR = [:][a-zA-Z0-9_]+;
Вы можете использовать буквенно-цифровой символ + подчеркивание.
Если я правильно прочитал исходный код парсера PDO SQL , это буквенно-цифровые символы плюс подчеркивание.