【问题标题】:SQL Statement to update multiple columns with multiple where conditions使用多个 where 条件更新多个列的 SQL 语句
【发布时间】:2017-12-02 07:00:24
【问题描述】:

所以我有以下 SQL 语句:

db.exec("UPDATE products SET product_description = '#{fj_description}' AND personalization = '#{fj_personalization}' AND product_photo = '#{fj_product_photo}' AND order_information = '#{fj_order_information}' WHERE campaign_name = '#{camp_name}' AND product_type = 'fleecejacket'")

所有变量都返回从 HTML 输入字段中检索到的正确文本,因此 sql 语句似乎有问题。当我尝试更新数据库时,出现此错误:

PG::InvalidTextRepresentation at /update_products
ERROR: invalid input syntax for type boolean: "soft, midweight fleece" LINE 1: UPDATE products SET product_description = 'soft, midweight f... ^

【问题讨论】:

  • 如文档所述,UPDATE 不在值之间使用 AND。 SET some=1, other=2, third=3...
  • @SamiKuhmonen 完美运行。谢谢!
  • 请不要这样做
  • @engineersmnky 只有管理员才能访问您可以访问的页面。客户无法访问它。
  • @athill16 无关紧要的安全不是保护客户,而是保护数据。也许管理员今天过得很糟糕,或者他不知道 SQL,并且有人要求他们的个性化设置以阅读“我的名字”;DROP TABLE products--”从不信任用户输入,无论用户

标签: html ruby postgresql sinatra pgadmin


【解决方案1】:

尝试使用逗号代替AND:

"UPDATE products 
 SET product_description = '#{fj_description}',
   personalization = '#{fj_personalization}',
   product_photo = '#{fj_product_photo}',
   order_information = '#{fj_order_information}' 
 WHERE campaign_name = '#{camp_name}' 
 AND product_type = 'fleecejacket'"

【讨论】:

  • 谢谢,我将“与”改为逗号,而没有更改引号,我只需要修复它。
  • 我已经编辑了答案以澄清它,谢谢@athill16。
猜你喜欢
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
相关资源
最近更新 更多