首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby SQLite3 bind_params

Ruby SQLite3 bind_params
EN

Stack Overflow用户
提问于 2015-04-02 05:56:23
回答 2查看 163关注 0票数 1

我和Ruby SQLite有点问题。这是我的代码

代码语言:javascript
复制
require 'socket'
require 'sqlite3'

server = TCPServer.open(1337)
DB = SQLite3::Database.new "./Tavern.db"
loop {
    Thread.start(server.accept) do |client|
        input = client.gets
        input = input.gsub '\n', ''
        input = input.split(' ')
        case input[0]
        when 'register'
            stmt = DB.prepare "INSERT INTO Managers (name, job, location, busy)
            VALUES (?, ?, ?, 0)"
            stmt.bind_params input[1], input[2], client.addr[3]
            stmt.execute
        when 'request_job'
            stmt = DB.prepare "SELECT * FROM Tasks WHERE job = ? AND assigned = 0"
            stmt.bind_params input[1]
            results = stmt.execute
            puts results.next
        end
    end
}

Where input[1] = "test"

如果stmt.bind_params input[1]改成了stmt.bind_params "test",那么sql查询就会起作用,如果保持原样,就不会起作用。我检查了一下,以确保"test“和input1与==相等,并对它们使用.bytes并手动进行比较。

有什么想法可以解释为什么会这样吗?

EN

回答 2

Stack Overflow用户

发布于 2015-04-02 12:35:29

你也尝试过使用stmt.bind_params( 15, "hello" )风格的语法吗?

票数 0
EN

Stack Overflow用户

发布于 2017-01-16 04:54:12

我也遇到过类似的问题。事实证明,我使用的字符串的编码与所需的编码不同。

检查input[1].encoding"test".encoding产生的结果!如果它们不同,请使用force_encoding-method。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29401551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档