PHP注意未定义HTML选择选项标签的索引


PHP Notice Undefined Index for HTML Select Option Tag

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);
    }
?>