我已经用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));


但是,最好使用带有参数的预备语句,而不是在查询中插入字符串。

07-25 22:49