计算行数然后更新 - Php Mysql

时间:2018-01-20 11:26:29

标签: php mysql

我正在尝试计算具有日期时间戳的表中的行,然后使用过去24小时内创建的总行进行更新:

这是功能代码

function limitexchnage($eid) {
  global $db;
  $query = $db->query("SELECT * FROM exchanges WHERE uid='$eid' and created less than 24 hour ");
    while($row = $query->fetch_assoc()) {
        $update = $db->query("UPDATE users SET maxechange='$query->num_rows' WHERE id='$eid'");
   }  }

我需要有人帮助我在过去24小时内找到时间戳并修复此代码。

4 个答案:

答案 0 :(得分:0)

将此条件放在where子句WHERE (Date_Time = getdate())

答案 1 :(得分:0)

function limitexchnage() {
global $db;
$check = $db->query("SELECT * FROM exchanges WHERE `created` > (UNIX_TIMESTAMP(NOW()) - 86400) AND `uid` = '$eid'");
        $update = $db->query("UPDATE users SET maxechange='$check->num_rows' WHERE id='$eid'"); }

答案 2 :(得分:0)

尝试此查询

"SELECT * FROM exchanges WHERE uid='$eid' and date > DATE_SUB(CURDATE(), INTERVAL 1 DAY);"

更新中的条件相同。 这将返回具有最近24小时内的值的日期

答案 3 :(得分:0)

您实际上可以将这些组合成一个查询:

function limitexchnage($eid) {
    global $db;
    $query = $db->query("UPDATE users SET maxechange=(SELECT COUNT(uid) FROM exchanges WHERE uid='$eid' AND created < NOW() AND created > DATE_SUB(NOW(), INTERVAL 1 DAY)) WHERE id='$eid'");
}

您应该交换COUNT(uid)部分以使用exchanges表的主索引。在查询中直接使用时,请记得逃避/清理$eid