我有一个高分表,除了随机时间似乎将某些用户重置回 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/