未定义的索引:做IF和Elseif

时间:2018-05-12 13:59:14

标签: php mysqli

我有一个代码,使用php mysqli将数据插入到数据库中获取Undefined index:在IF和Elseif行上执行。插入表单有效,但如何让错误消失? (这只是代码的一部分,希望你能帮忙)

IF($_GET['do']=='sparatid' ){
   $datum=$_POST['datum'];
   $info=$_POST['info'];
   $color=$_POST['color'];
   $uppdatera = "UPDATE narvaro SET info = '{$info}', color = '{$color}' WHERE datum = '{$datum}'";
   $res = mysqli_query($con, $uppdatera) or die("SQL: Gick ej att uppdatera informationen $uppdatera <br>".mysql_error());
}


ElseIF($_GET['do']=='nytid'){
$datum=$_POST['datum'];
$info=$_POST['info'];
$color=$_POST['color'];
$sql = "insert into narvaro (fornamn, efternamn, datum, info, narvaro_id, pos, color) SELECT (fornamn), (efternamn), '$datum', (info), (narvaro_id), (pos), '$color' FROM narvaro WHERE datum ='2018-02-28'";
$results = mysqli_query($con, $sql);

}

1 个答案:

答案 0 :(得分:0)

未定义的索引

如果参数do尚未与请求一起发送,那么如果您尝试使用undefined index访问该参数,则会收到通知$_GET['do']。要解决此问题,您必须检查索引do是否已使用isset($_GET['do'])设置。

意外的其他

在你提供的代码中,elseif不应该抛出错误,尽管你应该把它全部写成小写。 If you are interested please have a look at the PHP documentation for else if

工作代码示例

<?php

    // Display all errors
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    // Check if 'do' has actually been set
    if (isset($_GET['do'])) {
        if ($_GET['do']=='sparatid' ) {
            $datum=$_POST['datum'];
            $info=$_POST['info'];
            $color=$_POST['color'];
            $uppdatera = "UPDATE narvaro SET info = '{$info}', color = '{$color}' WHERE datum = '{$datum}'";
            $res = mysqli_query($con, $uppdatera) or die("SQL: Gick ej att uppdatera informationen $uppdatera <br>".mysql_error());
        } else if ($_GET['do']=='nytid') {
            $datum=$_POST['datum'];
            $info=$_POST['info'];
            $color=$_POST['color'];
            $sql = "insert into narvaro (fornamn, efternamn, datum, info, narvaro_id, pos, color) SELECT (fornamn), (efternamn), '$datum', (info), (narvaro_id), (pos), '$color' FROM narvaro WHERE datum ='2018-02-28'";
            $results = mysqli_query($con, $sql);
        }
    }