次のようなコードで、シングルクォーテーションを含むSQL文字列をエスケープし、INSERTする、というものなのですが、
エラーが起きてしまいます。
どうしたら良いでしょうか?
コード
require 'mysql2' require "sqlite3" db = SQLite3::Database.new "noindex.db" puts str = %(Couldn't) # => INSERTできない。エラー。 # puts str = %(Couldnt) # => INSERTできる p Mysql2::Client.escape(str) # => エスケープはできている。型もString。 db.execute(%(INSERT INTO common ( title, created_at, updated_at ) VALUES ( '#{Mysql2::Client.escape(str)}', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP );) )
エラー
C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/database.rb:91:in `initialize': near "t": syntax error (SQLite3::SQLException) from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/database.rb:91:in `new' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/database.rb:91:in `prepare' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/database.rb:137:in `execute' from C:/pg/dev/crawler/dev.rb:11:in `<main>'
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。