php - MySQL UPDATE 随机重置值?

标签 php mysql

我有一个高分表,除了随机时间似乎将某些用户重置回 0 的问题之外,它似乎工作正常,这是我的查询:

$user   = isset($_GET['username']) ? $_GET['username'] : "";
$time   = isset($_GET['time']) ? $_GET['time']  : "";
$videos  = isset($_GET['videos']) ? $_GET['videos'] : "";
$credits  = isset($_GET['credits']) ? $_GET['credits'] : "";


$user  = mysql_real_escape_string($user);
$time  = mysql_real_escape_string($time);
$videos = mysql_real_escape_string($videos);
    $credits = mysql_real_escape_string($credits);
    $secret = mysql_real_escape_string($secret);

// Main Query
$retval = mysql_query("
     INSERT INTO
     highscores(Username, Time, Videos, Credits)
     VALUES
     ('$user', '$time', '$videos', '$credits')
     ON DUPLICATE KEY UPDATE
     Time = '$time',
     Videos = '$videos',
     Credits = '$credits'
     ",
     $conn
     );

大多数时候更新都很好,有人能看出问题出在哪里吗?

最佳答案

我猜你想更新信用而不是归零。

假设您在执行查询之前将 $credit 设置为 0,则 ON DUPLICATE KEY UPDATE 部分将导致当前用户积分清零。相反,你应该这样做:

<?php
$user = 109;
$time = time();
$videos = 'something';
$credits = 0;
$retval = mysql_query("INSERT INTO
                       highscores
                       (Username, Time, Videos, Credits)
                       VALUES
                       ('$user', '$time', '$videos', '$credits')
                       ON DUPLICATE KEY UPDATE
                       Time = '$time',
                       Videos = '$videos',
                       Credits = Credits + 1", $conn);

关于php - MySQL UPDATE 随机重置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7381456/

相关文章:

php - Magento : How to check if admin is logged in within a module controller?

mysql - 如果页面上需要进行大量 Ajax 过滤,那么提取整个数据集是否会更好?

mysql - 错误代码 : 1126. 无法打开共享库 'C:\Program Files\MySQL\MySQL Server 5.6\lib\plugin\semisync_master.so'

mysql - 如何优化 mysql 中的 IN 子句?

PHP - 从 POST 变量中删除撇号

php - 确定哪个 PHP 脚本执行特定的 mysql 查询

php - MySQL:克隆一张表中的行

php - MySQL年周函数空间

mysql - 查询获取数据,按两列分组,并按Client ID在一行中显示多个相似行

php - 通过 PHP cURL 获取文件内容