我已经用Javascript开发了一个游戏,当用户完成游戏后,我必须将他的记录保存在数据库中。在这里,您将看到代码:
$temp = $_POST['playername']; //username
$text = file_get_contents('names.txt'); //list with all usernames
//this text file contains the names of the players that sent a record.
$con=mysqli_connect("localhost","username","pass","my_mk7vrlist");
if (stripos(strtolower($text), strtolower($temp)) !== false) {
//if the username is in the list, don't create a new record but edit the correct one
mysqli_query($con, "UPDATE `my_mk7vrlist`.`mk7game` SET `record` = '".$_POST['dadate']."' WHERE `mk7game`.`playername` = ".$temp." LIMIT 1 ");
} else {
//The username is not in the list, so this is a new user --> add him in the database
mysqli_query($con, "INSERT INTO `mk7game` (`playername`,`record`,`country`,`timen`) VALUES ('".$_POST['playername']."', '".$_POST['dadate']."', '".$_POST['country']."', '".$_POST['time_e']."')");
file_put_contents("names.txt",$text."\n".$temp);
//update the list with this new name
}
//Close connection
mysqli_close($con);
当我有一个新用户(“ else”中的部分)时,代码将正确运行,因为我的数据库中有一个新行。
如果用户名已存在于列表中,则表示该玩家已经发送了他的记录,因此我必须更新该表。顺便说一句,我无法在已经发送记录的播放器上编辑记录。
mysqli_query($con, "UPDATE `my_mk7vrlist`.`mk7game` SET `record` = '".$_POST['dadate']."' WHERE `mk7game`.`playername` = ".$temp." LIMIT 1 ");
看来这是错误的,我不知道为什么。我对PHP和MySQL很陌生。
你有什么建议吗?
最佳答案
您在$temp
语句中的UPDATE
周围缺少引号:
mysqli_query($con, "UPDATE `my_mk7vrlist`.`mk7game`
SET `record` = '".$_POST['dadate']."'
WHERE `mk7game`.`playername` = '".$temp."'
^ ^
LIMIT 1 ") or die(mysqli_error($con));
但是,最好使用带有参数的预备语句,而不是在查询中插入字符串。