Ruby 在SQLite中更新记录?
此代码不会更改Ruby 在SQLite中更新记录?,ruby,sqlite,Ruby,Sqlite,此代码不会更改person表中fullname列中的数据,也不会产生错误。 我使用变量$editKey获取要编辑的记录,因此它按计划工作: def upDateRecord getInputs puts $editKey puts $fullname db = SQLite3::Database.open "ruby-test-02.db" db.execute "UPDATE person SET fullname = $fullname WHERE ID = $edit
person
表中fullname
列中的数据,也不会产生错误。
我使用变量$editKey
获取要编辑的记录,因此它按计划工作:
def upDateRecord
getInputs
puts $editKey
puts $fullname
db = SQLite3::Database.open "ruby-test-02.db"
db.execute "UPDATE person SET fullname = $fullname WHERE ID = $editKey"
rescue SQLite3::Exception => e
puts "Exception occured"
puts e
ensure
db.close
puts $editKey
puts $fullname
end
解决
def更新记录
将“在更新记录中”
获取输入
db = SQLite3::Database.new "ruby-test-02.db"
stm = db.prepare "UPDATE person Set fullname=? WHERE ID=?"; stm.bind_param 1, $fullname; stm.bind_param 2, $editKey;stm.execute;stm.close
stm = db.prepare "UPDATE person Set sex=? WHERE ID=?"; stm.bind_param 1, $sex; stm.bind_param 2, $editKey;stm.execute;stm.close
stm = db.prepare "UPDATE person Set birth=? WHERE ID=?"; stm.bind_param 1, $birth; stm.bind_param 2, $editKey;stm.execute;stm.close
stm = db.prepare "UPDATE person Set death=? WHERE ID=?"; stm.bind_param 1, $death; stm.bind_param 2, $editKey;stm.execute;stm.close
营救SQLite3::异常=>e
放置“发生异常”
放e
确保
db.close
end
db.execute“updateperson SET fullname=#{$fullname},其中ID=#{$editKey}”
应该是workRuby不是PHP。您可能想阅读一本关于ruby的介绍性书籍(以及ruby对变量的处理以及字符串插值)。此外,在ruby$foo
中,它是一个全局变量(除非在非常特定的情况下,否则不应该使用它)。此外,在ruby中,变量和方法是使用snake_case编写的,类是CamelCase。另外,考虑使用类似ORM的工具。是的,你提供的解决方案不起作用;但感谢可能的副本