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

时间:2014-03-24 04:55:12

标签: php html

Notice: Undefined index: ArLebel in E:\xampp\htdocs\proj\example\insert.php on line 15.

这是Dropdown的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);

    }
?>

3 个答案:

答案 0 :(得分:1)

您的代码中只有拼写不匹配错误: -
您在选择选项中使用"ArLevel",只需选择级别

你在$_POST["ArLebel"]

的PHP代码中使用$_POST["ArLevel"]


唯一的错误是b & v

答案 1 :(得分:0)

数组键以字符串形式给出,字符串应该用引号括起来,即使你已经在一个字符串中(或者是heredocs / nowdocs,但这里不相关):

它是$variableName["keyName"],而不是$variableName[keyName],除非keyName是定义的常量。

变化

'$_POST[ArLebel]','$_POST[ArSubject]'

进入

'{$_POST["ArLebel"]}','{$_POST["ArSubject"]}'

{}允许在其他字符串中使用索引变量。

如果没有正确执行此操作,可能会让您注意到假设字符串不是常量。

但是看到你有一个不同的通知消息(未定义的索引),它也告诉你找不到整个索引(字符串也不是常量)...所以你需要检查为什么$_POST["ArSubject"]不存在

您是否看过Tun Zarni Kyaw关于可能在某处错误拼写ArLevelArLebel的评论?

警告:

您的代码容易受到SQL注入攻击!在将变量放入查询之前,请先清理它们的变量!

答案 2 :(得分:0)

使用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);

    }
?>