我正在创建Flash游戏,玩家需要尽可能快地通过游戏。我已经让玩家排在第10位并按时间排序(从最低到最高),但是我有一个问题,如果同一个玩家玩几次他总是添加到数据库。我需要让这个玩家和他最好(最低)的时间只被写入数据库或只打印出他的名字。 (如果玩家的时间低于在数据库中保存的时间,那么我需要更新/插入它。)谢谢。
示例如何:
Peter 00:07
Peter 00:09
Peter 00:12
John 00:17
John 00:21
示例应如何:
Peter 00:07
John 00:17
这是我的SelectFromDB.php
<?php
$time = $_POST['time'];
session_start();
$name = $_SESSION['vardas'];
$time = strtotime($time);
$times = date('s:H:i', $time);
$_SESSION['test'] = $times;
$_SESSION['test1'] = $username;
$mysqli = new mysqli("localhost","my_db","pass","my_db");
$query = "SELECT userName,time FROM eurokos ORDER by time ASC LIMIT 10";
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
// printf(" ", $mysqli->character_set_name());
}
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<results>';
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_assoc()) {
echo $row["userName"].' '.$row["time"]."\n";
}
$result->free();
}
echo '</results>';
$mysqli->close();
?>
这是我的InsertToDB.php
<?php
$time = $_POST['time'];
session_start();
$name = $_SESSION['vardas'];
$time = strtotime($time);
$times = date('s:H:i', $time);
$_SESSION['test'] = $times;
$_SESSION['test1'] = $username;
$mysqli = new mysqli("localhost","my_db","pass","my_db");
if ($stmt = $mysqli->prepare("INSERT into eurokos (time, userName) VALUE (?,?) ")) {
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
// printf(" ", $mysqli->character_set_name());
}
$stmt->bind_param('ss', $times, $name);
// $stmt->bind_param("s", $username);
$stmt->execute();
if ($stmt->error != '') {
echo ' error:'.$stmt->error;
} else {
echo 'success';
}
$stmt->close();
} else {
echo 'error:'.$mysqli->error;
}
$mysqli->close();
答案 0 :(得分:0)
在插入记录之前执行此操作
运行选择查询并查看该用户名是否存在。
如果存在,请比较db time大于的时间 要插入的值,运行更新查询以更新时间 新价值。
如果不存在,请为该用户运行插入查询。
答案 1 :(得分:0)
仅更改您的选择:
SELECT userName,min(time) time FROM eurokos group by userName order by time ASC LIMIT 10;
答案 2 :(得分:0)
以下是我将如何做到这一点
$time = _SESSION[test];
$user = "john";
$res = $con->prepare("SELECT time from eurokos WHERE userName = '$user' AND time > '$time'");
$res->execute();
$allow_new_insert = $res->num_rows;
if(!$allow_new_insert) {
//insert magic code for updating time here
}