在Moodle核心内部,当向数据库发送查询时,调用 preg_match_all 寻找:(冒号),以便查找查询的参数。
我有一个字符串(内部"")由数字,冒号和字母(" 102516101:t")组成。
当然,它不会涉及参数。由于冒号(:),Moodle仍然期待一个。
如何阻止 preg_match_all 查看引号内? 还是有人有另一个想法?
答案 0 :(得分:2)
根据上面留下的评论,您应该明确指定SQL语句中使用的变量。换句话说,您不应该手动构建SQL语句,也不应该是最低要求。
示例:
$sql = "SELECT * FROM {groups} WHERE name = :name";
$params = array('name' => '102516101:t');
$DB->execute($sql, $params);
您还会注意到表格名称的指定方式如下:{table_name}
,它们会使用正确的前缀自动展开。