我有以下数据库查询在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替换,但似乎在%和得分之间有一个倒置的逗号。我不能为我的生活找出原因!
答案 0 :(得分:1)
我不知道{rules_scheduler}
应该是什么,所以我将为您提供一个与通配符一起使用的查询字符串:
$query = "SELECT identifier FROM rules_scheduler WHERE identifier LIKE CONCAT('%', :schid)";
$res = db_query($query, [':schid' => '_' . $sch_id]);