gpt4 book ai didi

php - 用于记录尝试插入已存在行的列

转载 作者:行者123 更新时间:2023-11-29 06:05:56 25 4
gpt4 key购买 nike

我正在尝试创建一个列并使其计算用户尝试插入的次数。

举个例子会让事情变得更清楚:

+-------+----------------------------------+--------------+
| text | md5 | insert_times |
+-------+----------------------------------+---------+----+
| 123 | 202cb962ac59075b964b07152d234b70 | 834 |
| abc | 900150983cd24fb0d6963f7d28e17f72 | 923 |
+-------+----------------------------------+--------------+

其中 text 是主键。
每当用户尝试插入 123(使用 INSERT IGNORE 以避免收到错误消息,因为 123 已存在)时,insert_times code> 将增加 1,跟踪在表中插入现有文本的尝试次数。

关于如何制作它有什么想法吗?
我无法创建触发器,因为我的数据库主机(godaddy)不允许触发器。
如果在 mysql 中无法完成,我可以在 php 的帮助下完成它吗?

最佳答案

要在单个简单查询中执行此操作,只需使用 ON DUPLICATE KEY UPDATE MySQL 中的函数。这样,您只需执行 INSERT,然后执行“重复”行中需要更新的内容即可。例如:

INSERT INTO tbl (text, md5, insert_times) VALUES ('abc', {MD5}, 0}
ON DUPLICATE KEY UPDATE insert_times+1;

但是,我个人更喜欢 PHP 方法,因为在我的大多数查询中,事情通常不像简单的更新那么简单:

$res = mysql_query(sprintf("SELECT text FROM tbl WHERE text = '%s'", $text));
if (mysql_num_rows($res) != 0)
{
mysql_query(sprintf("UPDATE tbl SET insert_times+1 WHERE text = '%s'", $text);
}
else
}
mysql_query(sprintf("INSERT INTO tbl SET text = '%d', md5 = '%s'", $text, $hash);
}

如果需要,此方法还可以留出更多空间来触发其他事件/功能。

关于php - 用于记录尝试插入已存在行的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com