在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'中允许使用哪些字符?
答案 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,那就是字母数字字符和下划线。