Допустимые символы PDO для заполнителей - PullRequest
19 голосов
/ 28 апреля 2011

В PHP с PDO, какими символами мы ограничены в использовании.Я пытался посмотреть в документации и в Интернете, но безрезультатно.

Я нашел сообщение, в котором пользователь использовал Hypen в имени, который нарушил запрос.Я пишу функцию, которая динамически генерирует эти имена, и поскольку дефисы не являются номерами, мне было интересно, существует ли список альтернатив.

<?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();
?>

Так что в этом примере какие символы будут разрешены в строке': цвет'

?

Ответы [ 2 ]

33 голосов
/ 28 апреля 2011

Самый простой способ выяснить это просто проверить исходный код:
https://github.com/php/php-src/blob/master/ext/pdo/pdo_sql_parser.re#L49:

BINDCHR     = [:][a-zA-Z0-9_]+;

Вы можете использовать буквенно-цифровой + подчеркивание.

9 голосов
/ 28 апреля 2011

Если я правильно прочитал исходный код парсера SQL PDO , это буквенно-цифровые символы и подчеркивание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...