如果在一个时间内(使用未定义的常数)

时间:2013-03-25 01:52:55

标签: php if-statement while-loop undefined

我为每个员工都有一个暂停的布尔值。当在表格中显示工作人员时,我想显示文本“SUSPENDED”或“NOT SUSPENDED”而不是1或0.

我一直收到错误, 注意:使用未定义的常量Staff_Suspension - 假设为'Staff_Suspension' 我相信这很简单,我相当新的PHP,只是卡住,不想再浪费时间试图解决这个问题,而不是任何地方。帮助赞赏

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "\t<tr>\n";
        echo "\t\t<td> $row[Staff_ID] </td>\n";
        echo "\t\t<td> $row[Staff_Forename] </td>\n";
        echo "\t\t<td> $row[Staff_Surname] </td>\n";
        echo "\t\t<td> $row[Staff_Email] </td>\n";
        echo "\t\t<td>";

        if ($row[Staff_Suspension] == 1){
            echo 'Suspended';
        } else if ($row[Staff_Suspension] == 0){
            echo 'Not Suspended';
        }

        echo "</td>\n";
        echo "\t\t<td> $row[Staff_Delete_Permissions] </td>\n";
    echo "\t</tr>\n";

}

2 个答案:

答案 0 :(得分:3)

您必须引用索引。否则,PHP假定您defined a constant命名为Staff_Suspension。如果不存在这样的常量,则它假定您要指定字符串文字。引用会消除任何猜测工作(因此,任何通知):

if ($row['Staff_Suspension'] == 1) {
    echo 'Suspended';
} elseif ($row['Staff_Suspension'] == 0) {
    echo 'Not Suspended';
}

或简化:

echo $row['Staff_Suspension'] ? 'Suspended' : 'Not Suspended';

答案 1 :(得分:3)

<强>答案:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "\t<tr>\n";
        echo "\t\t<td>". $row['Staff_ID'] ".</td>\n";
        echo "\t\t<td>". $row['Staff_Forename'] ."</td>\n";
        echo "\t\t<td>". $row['Staff_Surname']". </td>\n";
        echo "\t\t<td>". $row['Staff_Email'] ".</td>\n";
        echo "\t\t<td>";

        if ($row['Staff_Suspension'] == 1){
            echo 'Suspended';
        } else if ($row['Staff_Suspension'] == 0){
            echo 'Not Suspended';
        }

        echo "</td>\n";
        echo "\t\t<td>". $row['Staff_Delete_Permissions'] ".</td>\n";
    echo "\t</tr>\n";

}

粗略解释

常量的使用主要来自define();,你不需要常数值的变量

您遇到此错误的原因来自以下几行:

    if ($row[Staff_Suspension] == 1){
        echo 'Suspended';
    } else if ($row[Staff_Suspension] == 0){
        echo 'Not Suspended';
    }

因为您是通过名称指定数组的键。你应该用引号括起来,双重或单一取决于你。

常数的例子:

define ('Name', 'ConstantValue');
echo Name;

这将输出:ConstantValue

现在,从阅读上述内容:

http://php.net/manual/en/function.define.php

该链接是对常数值的粗略探索。

现在针对您的具体问题。

$row[Staff_Suspension]您已经定义了一个常量值,因为这是一个列名,应该用引号括起来。

如果您从密钥编号中指定:$row[0];这是一个与您的问题无关的不同故事。