此未定义的索引消息是什么意思

What does this undefined index message mean

提问人:user3081307 提问时间:12/9/2013 最后编辑:Rob M.user3081307 更新时间:12/9/2013 访问量:1219

问:

这段代码调用输入到表单中的值,并将它们输入到数据库中(或者至少应该如此),每次页面加载时,它都会给出“未定义的索引”消息,我正在努力确定原因。

任何能提供给我的帮助都非常感谢!

<?php

$dbc=mysql_connect('localhost', 'user', '');
mysql_select_db('database', $dbc);



$sqlInsertString = "INSERT INTO band_information (Name, Photo, Bio, City, State, Zipcode, Genre, Link)
            VALUES ({$_POST['bandname']}, {$_FILES['bandphoto']['name']}, {$_POST['bandbio']}, {$_POST['bandcity']},
                    {$_POST['bandstate']}, {$_POST['bandzipcode']}, {$_POST['bandgenre']},{$_POST['bandlink']});";

if($_SERVER['REQUEST_METHOD']=='POST'){
    if(move_uploaded_file($_FILES['bandphoto']['tmp_name'], "C:\\HTML\\mgertenbach\\BAND\\photos\\{$_FILES['bandphoto']['name']}") && $mysql_query($sqlinsertString, $dbc)){
        print '<p>Thanks for submitting your band!</p>';
    } else {
        print '<p>Could not submit band because: <br/>' .
        mysql_error($dbc) . '</p>';
    }
}   
PHP HTML 表单 undefined-index

评论

0赞 iCezz 12/9/2013
就像你上面提到的,这是一个输入表单并插入数据库的页面,所以当你首先或在提交表单之前加载这个页面时,它仍然会插入到数据库中,但由于表单中没有值,但变量没有定义。你应该检查一下 isset($_POST){ //保存到数据库中 }
0赞 Damien Pirsy 12/9/2013
您还需要检查 _FILES 美元是否为空。您的表单是否使用 ?enctype="multipart/form-data"
0赞 Rob M. 12/9/2013
该 SQL 真的有效吗?你的值没有被引用......

答:

1赞 Shankar Narayana Damodaran 12/9/2013 #1

由于您是从 <form> 中获取值,因此需要首先检查它们是否已设置。

为此,您应该使用 isset 构造。喜欢这个

if(!isset($_POST['bandname'])) // And whichever variables you get from your <form>
{
echo "Band Name was not Provided";
exit;
}
else
{
//.... do your CRUD operations here
}

其次,您正在使用即将弃用的 mysql_* 函数。改用 MySQliPDO

评论

1赞 Damien Pirsy 12/9/2013
您还需要检查 _FILES 美元是否为空。