我正在使用psql数据库,其余的是使用Sinatra的Ruby。 我有我的控制器,我的模型,我的观点等。
我正在做一个小库存应用程序,目前我只能通过我的一个视图中的html表单用库存中的新数量更新数据库。
UPDATE products SET (name, quantity) = ('#{@name}', #{@quantity}) WHERE id = #{@id};
但是,我希望能够将订购/交付的金额输入到表格而不是库存中的新数量。
我知道我能做到
UPDATE product SET quantity = quantity + 200 WHERE...and so on.
但这不会从表格中获取200。
这是我第一次在这里提问,所以如果有任何遗漏请告诉我,我会为您提供更多信息。
答案 0 :(得分:0)
正如评论中提到的mudasobwa,您可以在SQL语句中插入数量值。如果您正在从表单(或任何其他形式的用户输入)读取值,我建议在SQL语句中使用参数,而不是直接通过字符串插值插入值。这有助于通过转义无效字符来阻止某些形式的SQL注入。
如果您直接使用PG
gem连接到数据库,则可以使用以下内容:
conn = PG.connect(connection_params)
conn.exec("UPDATE products SET quantity = quantity + $1 WHERE id = $2",
[params[:quantity], params[:id]])
这会将数量和ID值分别插入$1
和$2
占位符,但也会确保这些值不会破坏或恶意修改SQL语句。