我们目前有一些php代码,允许最终用户通过填写表单上的一些字段来更新我们数据库中的记录。数据库有一个名为sequentialNumber的字段,用户可以输入起始号码和结束号码,并且更新查询会在所有记录中在起始号码和结束号码之间使用sequentialNumber在后台运行。这是一个非常快速的查询。如何在运行更新代码之前检查现有记录?
最近我们遇到了一些问题,人们试图更新不存在的记录。现在,这不是数据库端的问题,但是如果记录不存在,他们希望得到通知,如果有的话,哪些不存在。
我能想到的要做到这一点的唯一方法是在循环中运行一个选择查询:
for ($i=$startNum; $i<=$endNum; $i++) {
//run select query: select sequentialNumber from myTable where sequentialNumber = $startNum;
}
的问题是,我们的共享主机对脚本的超时限制,如果sequentialNumber批足够大,剧本将超时。在运行更新查询之前是否有更好的方法来检查记录的存在?
编辑: 它只是发生,我认为我可以做的另一种考验:得到他们正试图更新的记录数($ endNum - $ startNum),然后执行一个计数查询:
select count(sequentialNumber) where sequentialNumber between $startNum and $endNum
如果查询的结果与减法的值不相同,那么我们知道所有的记录都不存在。它无法告诉我们哪些不在那里,但至少我们知道一些事情并不如预期。这是一种行之有效的方式吗?
基本上是一样的东西; mySQL允许你使用Between作为操作符,所以我不需要做比一个更大的数字,也可以比另一个少。 – EmmyS 2010-11-29 19:29:29