空表上的未定义索引

Undefined Index on Empty Form

此错误仅出现在启用了错误的本地开发系统上,否则编程工作正常,但我如何才能消除错误?

此代码段是从列名称半动态生成表单的代码的一部分,错误来自 addslashes($row[$val]) 最初打开空表单时。用数据填充表单后,错误就消失了,但在此之前,每个字段都会在页面顶部给出错误。

// Build WHERE clause to prevent errors when loading page with no values
$Where = (isset($PostID)) ? "WHERE `ID`='$PostID'" : "";

// Open record for viewing
$sqlView = "SELECT * FROM $TableName $Where";
$row = DBConnect($sqlView, "Select", $siteDB);

// Attempt to eliminate Undefined Index errors
if (!is_array($row)) $row = [];

// Get array of column names from tableaddslashes($row[$val])
$FieldNames = ListColumns($TableName, $siteDB);

// Create variable variables from table column names and populate on post or from existing entry
foreach ($FieldNames as $val) :
        $$val = (isset($_POST[$val])) ?  safeData($_POST[$val]) : addslashes($row[$val]);
endforeach;

$FieldNames,在这种情况下,包含:

Array
(
    [0] => ID
    [1] => PageTitle
    [2] => MenuTitle
    [3] => PageText
    [4] => DateUpdated
    [5] => ShowPage
)

实际错误是:

Notice: Undefined index: ID in /var/www/html/form.php on line 88    
Notice: Undefined index: PageTitle in /var/www/html/form.php on line 88
Notice: Undefined index: MenuTitle in /var/www/html/form.php on line 88
Notice: Undefined index: PageText in /var/www/html/form.php on line 88
Notice: Undefined index: DateUpdated in /var/www/html/form.php on line 88
Notice: Undefined index: ShowPage in /var/www/html/form.php on line 88

您的 $row 是空数组:

$$val = (isset($_POST[$val])) ?  safeData($_POST[$val]) 
        : (isset($row[$val]) ? addslashes($row[$val]) : '');