【发布时间】:2014-11-26 09:19:41
【问题描述】:
我最近编写了一个脚本,每十分钟写入一次数据库。该脚本的目的是如果该用户的记录存在则更新该记录,否则它会为该用户插入一条记录。
数据库有三个重要字段,idusernameip。
随着 IP 更改,脚本将更新该用户的 IP 字段或为具有新 IP 的用户添加记录,并在下次运行时更新 IP 而不是添加记录。
我正在尝试找出知道记录是否存在的最佳方法,以便我可以更新而不是插入。
我之前在更新语句之后使用$f->rowCount(),即
if($f->rowCount() > 0){ continue; }else{ the insert statement}
因此,如果受影响的行数大于 0,我就知道该记录存在。但是,如果 IP 没有更改,则实际上不会发生任何更新,$f->rowCount() 将等于 0。
现在我只是选择所有记录并将它们存储在一个数组中,检查用户名是否为in_array,如果是则进行更新,否则进行插入。有没有更好或更快的方法来确保记录是否存在,而无需进行选择?
我的问题真的是看看是否存在类似于$f->rowCount() 的东西,因为我前几天才发现。非常感谢
【问题讨论】:
-
对我来说,你在做什么非常不清楚。特别是“随着 IP 更改,脚本将更新该用户的 IP 字段或为具有新 IP 的用户添加记录,并在下次运行时更新 IP 而不是添加记录。” - 什么时候更新记录,什么时候插入一条新记录?请提供更多您的代码,因为我不明白您想使用的逻辑。
-
@northkildonan 我认为 OP 的意思是,如果用户名和 IP 的组合存在,那么什么都不应该发生(因此这里的更新是多余的)。不清楚他为什么要使用用户名而不是用户 ID 和 IP。