我需要对重复的密钥更新进行查询,看起来我的查询中缺少了一些东西。
此查询适用于值中的#
$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)