Я кодирую пользовательский экран загрузки для своего игрового сервера Half-Life. Я хочу отобразить последний визит, карту и имя Steam. Все работает очень хорошо, но мой последний визит Вставка не работает. Он работал раньше, и я даже ничего не изменил.MySQLi Вставка или обновление
include('mysql.php');
$map = $_GET['map'];
$communityid = $_GET['steamid'];
$apikey = "***SECRETAPIKEY***";
if(!empty($map) && !empty($communityid)) {
if(empty($map)) { $map = "undefined"; }
$authserver = bcsub($communityid, '76561197960265728') & 1;
$authid = (bcsub($communityid, '76561197960265728') - $authserver)/2;
$steamid = "STEAM_0:$authserver:$authid";
// Load Player data
$xml = simplexml_load_file('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='.$apikey.'&steamids='.$communityid.'&format=xml');
$name = $xml->players->player->personaname;
$avatar = $xml->players->player->avatarfull;
// Fetch Last online from User
$lastonline_get = mysqli_query($db, "SELECT * FROM lastonline WHERE steamid = '".$steamid."'");
while($row = mysqli_fetch_object($lastonline_get))
{
$user_lastonline = $row->lastonline;
}
// Count from last connect
function diff_time($differenz)
{
$differenz = time() - $differenz;
$tag = floor($differenz/(3600*24));
$std = floor($differenz/3600 % 24);
$min = floor($differenz/60 % 60);
$sek = floor($differenz % 60);
return array("sek"=>$sek,"min"=>$min,"std"=>$std,"tag"=>$tag,"woche"=>$woche);
}
$difftime_lastonline = diff_time($user_lastonline);
if($difftime_lastonline['tag']!=0) { $user_whenlastonline = $difftime_lastonline['tag']." Tage ".$difftime_lastonline['std']." Stunden und ".$difftime_lastonline['min']." Minuten "; }
elseif($difftime_lastonline['std']!=0) { $user_whenlastonline = $difftime_lastonline['std']." Stunden und ".$difftime_lastonline['min']." Minuten "; }
else { $user_whenlastonline = $difftime_lastonline['min']." Minuten "; }
// Last online Updaten
if(mysqli_query($db, "SELECT * FROM lastonline WHERE steamid = '".$steamid."'")) {
$lastonline_updaten = mysqli_query($db, "UPDATE lastonline Set lastonline = '".time()."' WHERE steamid = '".$steamid."'");
} else {
$lastonline_eintragen = mysqli_query($db, "INSERT INTO lastonline (steamid, lastonline) VALUES ('".$steamid."', '".time()."')");
}
}
Как вы можете видеть, я пытаюсь проверить, существует ли уже существующая запись базы данных для парообразования. Если это не так, он должен создать один. Если это так, он должен обновить существующий.
Но когда я запускаю код, он ничего не вставляет. (Я проверил URL и т. Д.)
Почему вы используете GET? Эти переменные (Карта & SteamID64Bit) работает только в пределах URL ..
Если определить Steamid как уникальный в таблице MySQL вы могли бы избежать, если-заявление в конце alltogether и просто использовать INSERT ... ON DUPLICATE KEY UPDATE. См. [Раздел 13.2.5.3. Справочного руководства по MySQL] (http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html) – sigy
Спасибо .. Это действительно помогло мне! –