【问题标题】:PDO valid characters for placeholders占位符的 PDO 有效字符
【发布时间】:2021-08-24 13:30:22
【问题描述】:

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

我确实找到了一个帖子,其中用户在名称中使用了连字符,从而破坏了查询。我正在编写一个动态生成这些名称的函数,因为连字符不是 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' 中允许使用哪些字符?

【问题讨论】:

  • 我不确定具体的限制是什么,但字母和下划线从来没有让我失望:-)

标签: php pdo


【解决方案1】:

最简单的查找方法是查看source code

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

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

【讨论】:

  • 只看源代码我就可以看到那里的错误......他们的评论表达是错误的。 -- 后面必须跟空格,而不是任何非换行符。
  • 如果有人感兴趣的话,PHP 5.6 没有变化。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2011-11-23
    相关资源
    最近更新 更多