2017-10-06 8 views
0

特定のパターンで終了する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); 
} 

しかし、これは次のようなエラーになり...

PDOException:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064 あなたのSQL構文でエラーが発生しています。右側の構文で がMySQLサーバーのバージョンに対応していることを確認し、 の1行目付近の '%' _ 591 ''を使用してください。SELECT ID FROM {rules_scheduler} WHERE identifier LIKE%:schid;アレイ([:SCHID] => _591) _callback_delete_scheduled_notifications()内は

だから、のように見える私:SCHIDトークンが正しく_591に置き換えますが、%との間の単一の反転にコンマがあるように思われていますアンダースコアなぜ私は私の人生のために傾ける!

+0

私が思うに、クエリは\ '%のようにする必要があります。子供\ 'です。 –

+0

セミコロンは何を意味しますか? – Collins

+0

申し訳ありませんが、私は: –

答えて

1

私は{rules_scheduler}をすることになっているかわからないので、私はワイルドカードで動作するクエリ文字列を提供します:

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

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

完璧、ありがとうございました。テーブルに関しては、drupalのdb_queryでは{table_name}のようなテーブルを定義します – Collins

+0

ああ、説明のためにありがとう! – Mjh

関連する問題