Php 使用通配符和数组替换的Mysql错误

Php 使用通配符和数组替换的Mysql错误,php,mysql,Php,Mysql,我有下面的db查询,它查找MySql表中以某种模式结束的行 $res = db_query('SELECT identifier FROM {rules_scheduler} WHERE identifier LIKE %:schid', array(':schid' => '_' . $sch_id)); foreach ($res as $rec) { scheduler_delete_schedule($component, $rec->identifier); }

我有下面的db查询,它查找MySql表中以某种模式结束的行

$res = db_query('SELECT identifier FROM {rules_scheduler} WHERE identifier LIKE %:schid', array(':schid' => '_' . $sch_id));
foreach ($res as $rec) {
    scheduler_delete_schedule($component, $rec->identifier);
}
但这会导致以下错误

PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行“%”附近:从{rules\u scheduler}中选择标识符 其中标识符LIKE%:schid;数组[:schid]=>\u 591英寸 _回调\删除\计划\通知

所以看起来我的:schid标记被正确地替换为591,但是在%和欠分之间似乎有一个倒逗号。我一辈子都搞不懂为什么

我不知道{rules_scheduler}应该是什么,所以我将为您提供一个使用通配符的查询字符串:

$query = "SELECT identifier FROM rules_scheduler WHERE identifier LIKE CONCAT('%', :schid)";

$res = db_query($query, [':schid' => '_' . $sch_id]);

我认为,查询应该是\'%;孩子\。分号是什么意思?对不起,我的意思是:通配符在绑定中。还有一个uu是一个单独的字符,这是你想要的,我认为%会在那里引起问题。太好了,非常感谢,这很管用。关于表,在drupal中的db_查询中定义了一个类似{table_name}的表