$ _SESSION未保存在数据库中

时间:2015-10-21 04:03:31

标签: mysql forms session

好的,我有一个网站,用户必须登录才能提交表单和字符表。该表单将所有信息传递到页面以插入数据库。表单页面和操作页面上的第一件事是

<?php
session_cache_expire(360);
session_start();
?>

表单上还有一个回显$ _SESSION [&#39; logname&#39;]的地方,以便您可以在页面上看到用户的姓名:

<p>Logged in as:<br />
<?=$_SESSION['logname']?>

这是有效的,它正确显示登录的人。现在,在表单操作中设置的页面上,代码为:

$sql="INSERT INTO topdata (log_name,char_name,create_date) 
VALUES (\"$_SESSION[logname]\",\"$_POST[char_name]\",NOW())";

我已多次检查数据库中的字段,并且它们是正确的,但是,$ _SESSION [logname]没有保存到数据库,当通过phpMyAdmin查看它时,该字段只是空白。所以$ _SESSION [logname]的信息并没有使它从表单上回显到输入到数据库中。我试过了[&#39; logname&#39;]和[logname],但都没有用。

我也尝试添加

<input type="hidden" name="log_name" value="<? $_SESSION['logname'] ?>" />
<input type="hidden" name="owner" value="<? $_SESSION['logname'] ?>" />

到表单,以及

<td>Player Name:</td>
<td><? echo $_SESSION['logname'] ?></td>

并将INSERT更改为

$sql="INSERT INTO topdata (log_name,char_name,create_date) 
VALUES (\"$_POST[logname]\",\"$_POST[char_name]\",NOW())";

查看表单以填写时,播放器名称会回显正确的会话信息,但仍然无法保存...

关于我做错了什么以及如何让会话登录保存在玩家名称字段中的任何想法?

非常感谢任何和所有帮助!

3 个答案:

答案 0 :(得分:2)

我认为您在查询' '中缺少单引号  你的代码是

$sql="INSERT INTO topdata (log_name,char_name,create_date) 
VALUES (\"$_SESSION[logname]\",\"$_POST[char_name]\",NOW())";

我认为您应该在$_SESSION['logname']$_POST['char_name']

中使用单引号
$sql="INSERT INTO topdata (log_name,char_name,create_date) 
VALUES (\"$_SESSION['logname']\",\"$_POST['char_name']\",NOW())";

答案 1 :(得分:1)

我认为你错过了一些带有变量的单引号:

$sql="INSERT INTO topdata (log_name,char_name,create_date) 
VALUES (\"$_POST['logname']\",\"$_POST['char_name']\",NOW())";

或者你可以简单地使用局部变量:

$logname = $_SESSION['logname'];
$char_name = $_SESSION['char_name'];
$sql="INSERT INTO topdata (log_name,char_name,create_date) 
VALUES (".$logname.", ".$char_name." ,NOW())";

答案 2 :(得分:0)

尝试使用

$sql="INSERT INTO topdata (log_name,char_name,create_date) 
VALUES ('{$_SESSION['logname']}', '{$_POST['char_name']}' ,NOW())";

如果它不起作用,请在mysql_query($ sql)语句后面写echo mysql_error();echo mysql_error();会在您的查询中打印出实际错误。它将使您清楚地了解插入查询未正确执行的原因。