将会话变量插入MySQL数据库

时间:2012-05-01 19:11:47

标签: php mysql

嘿,我是PHP的新手,我正在尝试在我的数据库中输入详细信息。我正在尝试输入用户输入的事件名称(POST)和登录用户的用户名。

我创建了用于存储用户用户名的会话,我的代码是

$eventname=$_POST['eventname'];
$myusername = $_SESSION['myusername']

$sql = mysql_query("INSERT INTO $tbl_nameVALUES('','$eventname','$_SESSION['myusername'])");

echo "You have been added to the event";

它的$ sql语句给出错误?任何帮助将不胜感激。

全部谢谢!

5 个答案:

答案 0 :(得分:7)

这里有几个潜在的问题。

首先,您没有针对SQL注入转义eventname。我们希望myusername已经安全。如果之前未进行过滤,请在mysql_real_escape_string()上使用$_SESSION['myusername']

$eventname = mysql_real_escape_string($_POST['eventname']);

// Then you need space before VALUES and are missing a closing quote on $_SESSION['myusername'], which should be in {}
$sql = mysql_query("INSERT INTO $tbl_name VALUES('','$eventname','{$_SESSION['myusername']}')");

最后,为了使语句有效,它假设您在$tbl_name中只有三列。您应该明确使用的列。替换colname1, event_name, username的正确列名。

$sql = mysql_query("INSERT INTO $tbl_name (colname1, event_name, username) VALUES('','$eventname','{$_SESSION['myusername']}')");

通过mysql_error()进行一些基本错误检查,将向您显示SQL语法错误的确切位置。

$sql = mysql_query(<your insert statement>);
if (!$sql) {
  echo mysql_error();
}

答案 1 :(得分:1)

您在插入声明中遗漏了'。试试这个

INSERT INTO $tbl_name VALUES('','$eventname','$_SESSION['myusername']')

答案 2 :(得分:0)

$tbl_nameVALUES之间需要一个空格,'之后确实需要一个$_SESSION['myusername']

查找SQL注入。

答案 3 :(得分:0)

删除$_SESSION数组中密钥周围的单引号:

$sql = mysql_query("INSERT INTO $tbl_name VALUES('', '$eventname', '$_SESSION[myusername])");

答案 4 :(得分:0)

希望它对你有所帮助......

$eventname=$_POST['eventname'];
$myusername = $_SESSION['myusername'];

$sql = mysql_query("INSERT INTO tbl_name VALUES('','$eventname','".$_SESSION['myusername'])."'");

echo "You have been added to the event";