Mysql Update +1无法在实时服务器上运行

时间:2014-03-09 15:40:16

标签: php mysql pdo sql-update

使用我的本地机器开发我的网站。我目前正在编写一个脚本o监狱内容抓取器,并在以后禁止它们。

我正在处理跟随'奇怪'的mysql更新情况。

通过尝试更新计数器以设置当前的int + 1,它不会发生,并且相同的记录将作为新记录插入。

当我在本地计算机上运行完全相同的查询时(即使是多次快速请求)它会像它应该的那样计数。

可能是具有相同IP的剪贴板请求页面比mySQL写入查询更快,因此它们将处于某种队列中吗?

有一些好的建议可以很好地对待这个吗?

更多代码:

// Check if ip exists
        $sql = $this->dbConnection->prepare("SELECT * FROM $this->table WHERE ipv4 = '$this->ipv4'");
        $sql->execute();

        $data = $sql->fetch(PDO::FETCH_OBJ);

        if ($data) {
            // Update counter ip
            $sql = $this->dbConnection->prepare("UPDATE $this->table SET counter = counter+1 WHERE ipv4 = '$data->ipv4'");
            $sql->execute();

        } else {

            // Insert new ip
            $ip2long = ip2long($this->ip);
            $sql = $this->dbConnection->prepare("INSERT INTO $this->table (ip, ipv4, referer, useragent) VALUES ('$ip2long', '$this->ip', '$this->referer', '$this->userAgent')");
            $sql->execute();
        }

1 个答案:

答案 0 :(得分:1)