php preg_match_all 避免引号

php preg_match_all avoid quotation mark

在 Moodle 核心内部,当向数据库发送查询时,会调用 preg_match_all 寻找 :(冒号),以便找到查询的参数。

我有一个由数字、冒号和字母组成的字符串(在“”内)("102516101:t").

当然不是隐含参数。由于冒号 (:).

,Moodle 仍然期待一个

如何防止 preg_match_all 查看引号内的内容? 或者有人有其他想法吗?

根据上面留下的评论,您应该明确指定 SQL 语句中使用的变量。换句话说,你不应该手动构建你的 SQL 语句,或者至少需要。

示例:

$sql = "SELECT * FROM {groups} WHERE name = :name";
$params = array('name' => '102516101:t');
$DB->execute($sql, $params);

您还会注意到 table 名称是这样指定的:{table_name},它们会自动扩展为正确的前缀。