PDO占位符有效字符

23
在PHP中使用PDO时,我们有哪些字符限制。我尝试查看文档和在线资料,但没有找到相关信息。
我发现一个帖子中用户在名称中使用了连字符,导致查询失败。我正在编写一个动态生成这些名称的函数,并且由于连字符是不允许的,所以想知道是否有可替代的字符列表。
<?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();
?>

在这个例子中,字符串“:colour”中允许使用哪些字符?


我不确定具体的限制是什么,但字母数字和下划线从未让我失望 :-) - prodigitalson
2个回答

38

最简单的方法是查看源代码

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

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


3
仅仅从源代码看,我就能发现其中有些错误……他们的注释表达式是错的。双连减符号 -- 必须在空白字符之后,而不是紧跟着任意非换行符的字符。 - mpen
2
如果有人感兴趣,对于PHP 5.6来说,这并没有改变。 - mpen

10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接