mysql2でprepared statementが上手く行かず躓いて解決したメモ
今,Rubyの勉強がてら
sinatraでtwitterもどきを作っている
加えてしっかりSQLも勉強したいということで
mysql2を使ってDB操作している
それでこの前躓いたことをメモっとく
カンマで区切った複数の値渡しがうまくいかない
以下のようにして
statement=client.prepare('select * from table where user_id in (?)') result=statement.execute(array.join(","))
想定したクエリは
select * from table where user_id in (a,b,c)
でも実際はprepared statementが上手く行ってなかった
(実行されているクエリの確認方法がわからなかったため,実際どういうクエリになったかは不明)
対策
mysql2-cs-bind
を使うことで
挿入したい値を持った配列を渡すだけで
中身が展開され想定されたクエリになった
使い方
result = client.xquery('select * from table where user_id in (?)',array)
いい感じ\(^o^)/