所以我制作了这个Flash游戏并输入了所有适当的变量。如果用户已登录,则应该将变量$ _SESSION [user]输入mysql数据库以存储用户的分数。出于某些奇怪的原因,它不会那样做。让它更奇怪的是我可以正确地回显$ _SESSION [user]变量,但是当它被抛入mysql DB时,它返回NULL(为0)。这是执行所有处理的代码。
<?php
session_start();
?>
<html>
<?php
include("../package.php"); //stuff for UI
echo $_SESSION[user]; //this works
if($_SESSION[user]){
mysql_query("INSERT INTO `DB`.`TABLE` (`user`,`type`,`game`,`score`) VALUES ('$_SESSION[user]', '$_POST[type]', '$_POST[g]', '$_POST[score]')");
?>
//Congratulations message in HTML
<?php
}
else{
?>
//Tells you to login (the 'else' statement to if($_SESSION[user])) also in HTML
<?php
}
?>
我没有看到任何错误......
答案 0 :(得分:0)
为了调试目的,将您的逻辑更改为此:
$sql = <<<EOL
INSERT INTO `DB`.`TABLE` (`user`,`type`,`game`,`score`)
VALUES ('$_SESSION[user]', '$_POST[type]', '$_POST[g]', '$_POST[score]')
EOL;
$result = mysql_query($sql) or die("query: $sql\n\n" . mysql_error());
这将为您提供生成的查询的完整文本,以及MySQL生成的确切错误消息。如果查询成功,则事情继续正常进行。如果有错误,那么你会被告知原因。
最有可能的错误是由于您错误引用了会话值:
PHP很有礼貌,会将您的$_SESSION[user]
翻译成$_SESSION['user']
(请注意引号)。但是当你在双引号字符串中执行此操作时,所有投注都会关闭。