重复密钥更新sql查询的正确格式是什么?看起来是打字错误或缺少什么



我需要对重复的密钥更新进行查询,看起来我的查询中缺少了一些东西。

此查询适用于值中的#

$insertqry=qa_db_query_sub("INSERT INTO test_table (userid,title, price) VALUES (#,#,#)", $userid, $title, $price);

我需要添加"复制密钥更新"。

这个查询在重复更新时可以很好地工作,但我需要在值中添加#,以确保SQL注入安全。

$insertqry = qa_db_query_sub("INSERT INTO test_table (userid,title,price) VALUES ('$userid','$title','$price') ON DUPLICATE KEY UPDATE  title='$title', price='$price'");

我正在尝试使用价值观中的#,但似乎不起作用。

$insertqry = qa_db_query_sub("INSERT INTO test_table (userid,title,price) VALUES (#,#,#)",$userid, $title, $price); ON DUPLICATE KEY UPDATE  title=#, price=#", $title, $price);

以下是关于更新DB查询以匹配格式的参考。https://github.com/q2a/question2answer/blob/dev/qa-include/db/post-update.php#L126

在您的情况下,我猜userid是主键或唯一键。。。试试

$insertqry=qa_db_query_sub("REPLACE INTO test_table (userid,title, price) VALUES (#,#,#)", $userid, $title, $price);

如果唯一密钥或主密钥已经存在,replace将自动删除第一条记录并插入新的

编辑:如果仍要使用ON DUPLICATE KEY尝试

$insertqry=qa_db_query_sub("INSERT INTO test_table (userid,title, price) VALUES (#,#,#) ON DUPLICATE KEY UPDATE userid= VALUES(userid), title= VALUES(title), price=VALUES(price)", $userid, $title, $price)

相关内容

最新更新