嘿,我是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语句给出错误?任何帮助将不胜感激。
全部谢谢!
答案 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_name
和VALUES
之间需要一个空格,'
之后确实需要一个$_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";