0

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

谢谢大家!

4

5 回答 5

8

这里有几个潜在的问题。

首先,您没有逃脱eventnameSQL 注入的攻击。我们假设这myusername已经是安全的了。如果它之前没有被过滤,也使用mysql_real_escape_string()on $_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();
}
于 2012-05-01T19:14:04.183 回答
1

'的插入语句中缺少一个。尝试这个

INSERT INTO $tbl_name VALUES('','$eventname','$_SESSION['myusername']')
于 2012-05-01T19:13:51.093 回答
1

希望对你有帮助...

$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";
于 2014-02-04T10:26:14.467 回答
0

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

$sql = mysql_query("INSERT INTO $tbl_name VALUES('', '$eventname', '$_SESSION[myusername])");
于 2012-05-01T19:15:21.190 回答
0

$tbl_name在and之间需要一个空格VALUES,实际上是'after $_SESSION['myusername']

并查找 SQL 注入。

于 2012-05-01T19:13:21.637 回答