0

私はRuby on Railsの初心者です。テキストボックスを検索してから、アポトラフィ( ')eg testing'という単語を入力するたびに.....私は常にエラーを受け取りました:

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's  word%' OR english_name LIKE '%testing's  word%' OR chinese_name LIKE '%testin' at line 1: SELECT COUNT(DISTINCT `jos_store`.`id`) FROM `jos_store` LEFT OUTER JOIN (SELECT id as store_replenishment, store, MAX(stock_movement) AS stock_movement FROM jos_store_replenishment GROUP BY store) AS replenishment ON replenishment.store = jos_store.id LEFT OUTER JOIN jos_stock_movement ON jos_stock_movement.id = replenishment.stock_movement WHERE (store_id LIKE '%testing's  word%' OR english_name LIKE '%testing's  word%' OR chinese_name LIKE '%testing's  word%')

私の問題を手伝ってくれませんか。

4

1 に答える 1

1

アポストロフィをエスケープしてみてください。例: english_name LIKE '%testing\'s word%'

'%PHRASE%' を使用していて、%PHRASE% 内に別の ' がある場合、like 句が終了したと見なされ、エラーが表示されます - エスケープ文字 (例: \') でエスケープすると、動作するはずです:エラーフレーズを使用すると、次のようになります。

<snip /> WHERE (store_id LIKE '%testing\'s  word%' OR english_name LIKE '%testing\'s  word%' OR chinese_name LIKE '%testing\'s  word%')    

'%testing\'s word%' を使用して、2 番目のアポストロフィが LIKE 句を終了していると思わないようにしていることに注意してください。

于 2012-07-13T08:48:37.047 に答える