PDO对占位符有效的字符

时间:2011-04-27 20:12:03

标签: 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'中允许使用哪些字符?

2 个答案:

答案 0 :(得分:32)

最简单的方法是查看源代码:
https://github.com/php/php-src/blob/master/ext/pdo/pdo_sql_parser.re#L49

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

您可以使用字母数字+下划线。

答案 1 :(得分:9)

如果我正确阅读了PDO SQL parser source code,那就是字母数字字符和下划线。