Notice: Undefined index: ArLebel in E:'xampp'htdocs'proj'example'insert.php on line 15.
这是我的下拉菜单的html代码。
<tr>
<td>Level</td>
<td><select name="ArLevel">
<option value="beginner">Beginner</option>
<option value="intermeted">Intermeted</option>
<option value="advance">Advance</option>
</select>
</td>
</tr>
<tr>
<td>Subject</td>
<td><select name="ArSubject">
<option value="politic">Politic</option>
<option value="islamic law">Islamic Law</option>
</select>
</td>
</tr>
这是我的PHP代码:
<?php
if (isset($_POST['submit'])) {
$con = mysql_connect("localhost","root","");
if(!$con){
die("Can not connect:" . mysql_error());
}
//Database Connection
mysql_select_db("example",$con);
$sql = "INSERT INTO datainsert(ArticleDate,ArticleAuthor,ArticleSource,ArLevel,ArSubject)
VALUES ('$_POST[ArticleDate]','$_POST[ArticleAuthor]','$_POST[ArticleSource]','$_POST[ArLebel]','$_POST[ArSubject]')";
mysql_query($sql,$con);
mysql_close($con);
}
?>
代码中只有拼写不匹配的错误:——
在选择选项中使用"ArLevel"
,在这里选择级别
在php代码中使用$_POST["ArLebel"]
代替$_POST["ArLevel"]
唯一的错误是b & v
数组键是作为字符串给出的,字符串应该用引号括起来,即使你已经在字符串中(或heredocs/nowdocs,但这与这里无关):
如果是$variableName["keyName"]
,而不是$variableName[keyName]
,除非keyName是一个已定义的常量。
'$_POST[ArLebel]','$_POST[ArSubject]'
到
'{$_POST["ArLebel"]}','{$_POST["ArSubject"]}'
{}允许在其他字符串中使用索引变量。
如果不能正确地执行此操作,可能会导致您注意到假设是字符串而不是常量。
但是看到你有一个不同的通知消息(未定义的索引),它也告诉你整个索引没有找到(字符串也不是常量)…所以你需要检查为什么$_POST["ArSubject"]
不存在。
你有没有看到敦扎尼觉关于可能把ArLevel
拼写成ArLebel
的评论?
警告:
你的代码容易受到SQL注入!请在将变量放入查询之前对其进行消毒!
使用isset()
检查POST变量是否设置。此外,在插入到数据库之前,转义POST变量也是一个很好的做法。
<?php
if (isset($_POST['submit'])) {
$con = mysql_connect("localhost","root","");
if(!$con){
die("Can not connect:" . mysql_error());
}
//Database Connection
mysql_select_db("example",$con);
$ArticleDate = isset($_POST['ArticleDate']) ? $_POST['ArticleDate'] : '';
$ArticleAuthor = isset($_POST['ArticleAuthor']) ? $_POST['ArticleAuthor'] : '';
$ArticleSource = isset($_POST['ArticleSource']) ? $_POST['ArticleSource'] : '';
$ArLebel = isset($_POST['ArLebel']) ? $_POST['ArLebel'] : '';
$ArSubject = isset($_POST['ArSubject']) ? $_POST['ArSubject'] : '';
$sql = "INSERT INTO datainsert(ArticleDate,ArticleAuthor,ArticleSource,ArLevel,ArSubject)
VALUES ('$ArticleDate','$ArticleAuthor','$ArticleSource','$ArLebel','$ArSubject')";
mysql_query($sql,$con);
mysql_close($con);
}
?>