php $ _SESSION变量没有携带一个Flash游戏?

时间:2011-07-04 21:01:02

标签: php session variables

所以我制作了这个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
}
?>

我没有看到任何错误......

1 个答案:

答案 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'](请注意引号)。但是当你在双引号字符串中执行此操作时,所有投注都会关闭。