带通配符和数组替换的Mysql错误

时间:2017-10-06 14:43:59

标签: php mysql

我有以下数据库查询在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服务器版本,以便使用正确的语法   靠近'%' _591''第1行:SELECT标识符FROM {rules_scheduler}   WHERE标识符LIKE%:schid;数组([:schid] => _591)in   _callback_delete_scheduled_notifications()

所以它看起来像我的:schid令牌正确地被_591替换,但似乎在%和得分之间有一个倒置的逗号。我不能为我的生活找出原因!

1 个答案:

答案 0 :(得分:1)

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

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

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