我为每个员工都有一个暂停的布尔值。当在表格中显示工作人员时,我想显示文本“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";
}
答案 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];
这是一个与您的问题无关的不同故事。