PHP运行一次查询

时间:2017-09-22 03:16:52

标签: php mysqli

这可能听起来很愚蠢,但我试图找出在统计表中运行查询的最佳方法,将所有值设置为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),则更新值使下一个查询失败。

你认为男人是最好的方法还是我走在正确的道路上?

最好的问候

1 个答案:

答案 0 :(得分:1)

我建议使用旗帜。类似的东西:

$queryFlag = 0;

if($queryFlag == 0) {
     //Do you things here
     $queryFlag = 1;
}