已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
关闭7天前。
Improve this question
我想知道什么是最好的做法dibi时插入,如果存在,然后更新一个特定的行。
编辑,截断我的文章以提高可读性:发现一个错误,它不是ON DUPLICATE KEY UPDATE SET ..
而是ON DUPLICATE KEY UPDATE ..
,现在运行,但仍然没有更新值!?
dibi::query("INSERT INTO table %v", $qdata, 'ON DUPLICATE KEY UPDATE %a', $qdata);
**已解决:**上层解决方案有效,只是UPDATE SET问题。
**为了获得更好的性能:**当插入大量数据(如blob)时,这种方法不是最好的,因为查询字符串将获得双倍长度。最好使用引用更新方法,如
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
在这里,您只引用insert语句中的values
,因为它们已经加载。也许有人知道如何在dibi中做到这一点,我还没有想到解决方案,因为我保存只有一些字节的内部系统。
Max
2条答案
按热度按时间mzsu5hc01#
假设你有一个这样的数组:
你想得到这个查询:
为了做到这一点,你必须从初始数组中收集键,并将它们放在一个新数组中, Package 在'VALUES'中
i2loujxw2#
另一种可能的解决方案是使用Dibi fluent interface。