ぬぬん!

やってみたこと,思ったこと

mysql2でprepared statementが上手く行かず躓いて解決したメモ

今,Rubyの勉強がてら
sinatratwitterもどきを作っている

加えてしっかり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が上手く行ってなかった
(実行されているクエリの確認方法がわからなかったため,実際どういうクエリになったかは不明)

対策

github.com

mysql2-cs-bindを使うことで
挿入したい値を持った配列を渡すだけで
中身が展開され想定されたクエリになった

使い方

result = client.xquery('select * from table where user_id in (?)',array)

いい感じ\(^o^)/