【发布时间】:2015-06-06 17:38:38
【问题描述】:
我遇到了 Ruby SQLite 的问题。这是我的代码,
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
}
在哪里input[1] = "test"
如果将stmt.bind_params input[1] 更改为stmt.bind_params "test",则sql 查询有效,如果保持原样,则无效。我已经检查以确保“test”和 input[1] 与 == 相等,并在它们两者上使用 .bytes 并手动比较。
关于为什么会出现这种情况的任何想法?
【问题讨论】:
标签: ruby string sqlite equality