将会话变量插入MySQL数据库

use*_*371 0 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";
Run Code Online (Sandbox Code Playgroud)

它的$ sql语句给出了错误?任何帮助将非常感激.

谢谢大家!

Mic*_*ski 8

这里有几个潜在的问题.

首先,您没有逃避eventnameSQL注入.我们希望这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']}')");
Run Code Online (Sandbox Code Playgroud)

最后,为了使语句起作用,它假设您正好有三列$tbl_name.您应该明确使用的列.替换正确的列名称colname1, event_name, username.

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

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

$sql = mysql_query(<your insert statement>);
if (!$sql) {
  echo mysql_error();
}
Run Code Online (Sandbox Code Playgroud)