【问题标题】:Count number of rows then update - Php Mysql计算行数然后更新 - Php Mysql
【发布时间】:2018-01-20 11:26:29
【问题描述】:

我正在尝试使用日期时间戳计算表中的行数,然后使用过去 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 小时内的时间戳并修复此代码。

【问题讨论】:

标签: php mysql


【解决方案1】:
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】:

    试试这个查询

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

    更新中的情况也一样。 这将返回最近 24 小时内的日期

    【讨论】:

      【解决方案3】:

      把这个条件放在你的 where 子句WHERE (Date_Time = getdate())

      【讨论】:

      • 我不明白 :(
      • 在 php 中找到等效的 getDate(),它会返回今天的日期。
      • 并创建不到 24 小时,这是不正确的,创建的是一个 column maxechange='$query->num_rows' 这也不正确,需要更多人了解
      • 我设置 $query = $db->query("SELECT * FROM exchange WHERE uid='$eid' and created>=date_sub(now(), 24 hours"); 并且不工作: (
      【解决方案4】:

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

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-23
        • 2016-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 1970-01-01
        相关资源
        最近更新 更多