返回函数-未定义的通知错误-下载csv文件


Returning function - Undefined notice error - downloading csv file

function get_description($table, $id){
    global $conn;
    if ($id!='') {
        $sql = "SELECT * FROM ".$table." WHERE id=".$id;
    $result = mysqli_query($conn, $sql);
    if (!$result) {
        die("Connection failed: " . mysqli_error($conn));
    }
    if (mysqli_num_rows($result) < 1) {
    }else{
        $rows = mysqli_fetch_assoc($result);
        $description = $rows['description'];
    }
    return $description;
}else{
    return "";
}
}

我的functions.php中有这个功能。我正在尝试下载csv文件,它确实下载了csv文件。但在csv文件的标题上发出了通知

注意:

未定义的变量:中的描述/第73行上的var/www/html/include/functions.php

第73行是指-return$description;

我想消除csv文件上的通知错误。

您只在特定条件下分配$description,而您总是返回它。您应该在函数的开头用默认值(如NULLFALSE(来分配它,在这种情况下可能是一个空字符串。

function get_description($table, $id){
    global $conn;
    $description = "";
    ...

您有时只定义变量:

if (mysqli_num_rows($result) < 1) {
}else{
    $rows = mysqli_fetch_assoc($result);
    $description = $rows['description'];
}

因此,如果执行if块(而不是else块(,则永远不会定义变量。首先在条件之外定义它,所以它总是至少有一些值:

$description = "";
if (mysqli_num_rows($result) < 1) {
}else{
    $rows = mysqli_fetch_assoc($result);
    $description = $rows['description'];
}

只需检查您的代码,在这种情况下,错误消息非常直接——"Undefined variable:description"。这意味着您正在返回未定义的变量。如果(mysqli_num_rows($result(<1( 语句的一部分是为正条件执行的,您并没有定义$description变量。将代码更改为:

function get_description($table, $id){
    global $conn;
    $description = "";
    if ($id!='') {
        $sql = "SELECT * FROM ".$table." WHERE id=".$id;
        $result = mysqli_query($conn, $sql);
        if (!$result) {
            die("Connection failed: " . mysqli_error($conn));
        }
        if (mysqli_num_rows($result) >= 1) {
           $rows = mysqli_fetch_assoc($result);
           $description = $rows['description'];
        }
    } 
    return $description;
}

问题在于返回$description,因为它不是在所有情况下都定义的。

使用以下代码

if( isset($description))
{
   return $description;
}