2012-05-01 63 views
-1

嘿,我是新来的PHp,我试图在我的数据库中输入详细信息。我正在尝试输入用户输入的事件名称(POST)和登录用户的用户名。将会话变量插入到MySQL数据库中

我已经创建的会话来存储用户的用户名,代码我已经是

$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语句?任何帮助将非常感激。

谢谢大家!

+1

这将是最好的,如果你也给了错误信息!它看起来像我站在哪里的语法错误。 pollirata和Micheal都深入地回答了这个问题。 – Malovich

+1

您的SQL查询很容易受到SQL注入的影响。 – Lion

+3

请停止使用古老的'mysql_ *'函数编写新代码。他们不再被维护,社区已经开始[弃用流程](http://news.php.net/php.internals/53799)。相反,您应该了解[准备好的陈述](http://en.wikipedia.org/wiki/Prepared_statement)并使用[PDO](http://php.net/pdo)或[MySQLi](http:// php.net/mysqli)。如果你关心学习,[这里是一个很好的PDO相关教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 –

回答

7

这里有几个潜在的问题。

首先,您还没有逃过eventname针对SQL注入。我们希望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']}')"); 

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

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

我已经做了更改,列出了错误消息状态意外的T_VARIABLE,我知道这是一个语法错误。 – user1368371

+0

如果你在'$ eventname'行有'T_VARIABLE'这个意外的字符,你可能在_before_行上有一个语法错误,就像缺少';'一样。 –

+0

正确的迈克尔!感谢你帮助大家! – user1368371

0

您需要$tbl_nameVALUES之间的空间,实际上$_SESSION['myusername']之后需要'

并查找SQL注入。

1

您在插入语句中缺少'。试试这个

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

删除围绕重点单引号在$_SESSION阵列:

$sql = mysql_query("INSERT INTO $tbl_name VALUES('', '$eventname', '$_SESSION[myusername])"); 
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";