占位符的 PDO 有效字符

2022-08-30 18:16:58

在带有PDO的PHP中,我们仅限于使用哪些字符。我尝试过在文档和在线查找,但无济于事。

我确实找到了一个帖子,其中一个用户在名称中使用了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”中允许使用哪些字符?


答案 1

找出答案的最简单方法是检查源代码

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

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


答案 2

如果我正确阅读了 PDO SQL 解析器源代码,它将是字母数字字符加上下划线。


推荐