这可能听起来很愚蠢,但我试图找出在统计表中运行查询的最佳方法,将所有值设置为0作为起点,我希望你的意见,我的表是例子:
Col1 - Col2 - Col3 - Col4 - Created - Modified
0 0 0 0 Datetime- Datetime
我的主脚本有几个foreach循环,我评估一些条件,如果有匹配,我构建查询并在最后运行mysqli multiquery,例如(伪代码):
$query = '';
foreach ($array as $val) {
if ($val == $mycondition) {
$query .= "UPDATE mytable SET Col1 = Col1 + 1;";
}
}
$db = mysqliConnection();
$num = $db->query("SELECT * FROM my table WHERE id = '".$ID."' AND Col1 = 0 AND Col2 = 0 AND Col3 = 0 AND Col4 = 0");
$result = mysqli_num_rows($num);
// if 0 it means that nothing has been modified yet so i can run the query
if ($result > 0) {
$db->multi_query($query)
}
$db->close();
这是我现在能想到的最好的方法,我创建了创建和修改的列,但我认为它们不适用于此,因为创建时间总是在修改时间之前,可能是在milisecs(但我不希望冒险在最长3秒左右之后允许多重运行的路径,导致如果用户在3秒之间错误地运行页面几次将存储错误的值)并且修改后的列将在第一次更改时立即改变如果我依赖于WHAl子句中的条件(即使只是milisec),则更新值使下一个查询失败。
你认为男人是最好的方法还是我走在正确的道路上?
最好的问候
答案 0 :(得分:1)
我建议使用旗帜。类似的东西:
$queryFlag = 0;
if($queryFlag == 0) {
//Do you things here
$queryFlag = 1;
}