【问题标题】:Trying to update an existing record - getting an error尝试更新现有记录 - 出现错误
【发布时间】:2019-09-11 13:21:29
【问题描述】:

我正在尝试将记录插入我的数据库,如果发现重复,它应该只更新一个字段。

这是我目前的代码

$strSQL = "INSERT INTO ppage_image_uploads(Cons_ID, Img_SRC, Program, TeamRaiser_ID) 
    VALUES
    ('" . $_POST["cons_id"] . "',
    '" . $_POST["img_src"] . "',
    '" . $_POST["program"] . "',
    '" . $_POST["tr_id"] . "')
    ON DUPLICATE KEY UPDATE
        Img_SRC = VALUES '" . $_POST["img_src"] . "'
    )";

从另一个问题中松散地理解了这一点:MySQL ON DUPLICATE KEY UPDATE for multiple rows insert in single query

我在处理这个脚本的页面上收到一条错误消息

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 8 行的 ''theimageurl.jpg' )' 附近使用正确的语法

我遗漏的那句话有什么不妥之处吗?

【问题讨论】:

  • 删除VALUES
  • @JimmyB 更新语句中的值?
  • 是的,VALUES 来自 Img_SRC = VALUES
  • 你可能想研究 SQL 注入以及你能做些什么......我建议你阅读How can I prevent SQL injection in PHP?
  • @JimmyB 非常感谢!这就是诀窍,初始记录提交,然后第二次尝试只更新图像。正是我想要的。谢谢一百万!

标签: mysql


【解决方案1】:

在您的 sql 查询末尾有一个不匹配的右括号。

ON DUPLICATE KEY 子句中的VALUES 可用于引用在没有发生重复键冲突的情况下将插入的值,如the documentation 中所述。

$strSQL = "INSERT INTO ppage_image_uploads(Cons_ID, Img_SRC, Program, TeamRaiser_ID) 
    VALUES
    ('" . $_POST["cons_id"] . "',
    '" . $_POST["img_src"] . "',
    '" . $_POST["program"] . "',
    '" . $_POST["tr_id"] . "')
ON DUPLICATE KEY UPDATE
    Img_SRC = VALUES(Img_SRC)";

【讨论】:

  • 感谢@GMB 的回复。不幸的是,仍然遇到同样的错误
  • @HisPowerLevelIsOver9000:我更新了查询,请您再检查一下吗?
猜你喜欢
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多