我有一个 html 表单,用于编辑 mysql 表中的记录。 在编辑的情况下,我使用查询返回的记录的当前值预填充表单,如下所示:
<INPUT TYPE="text" NAME="SITENAME" SIZE=35 VALUE="<?php echo $customer['sitename']; ?>">
我想使用相同的表单来创建新记录,但是当然不会为 sql 查询数组分配任何值,因此该表单将不起作用。 我知道我可以为每个输入或单个输入放置一个 IF 或 ISSET,但随后必须在没有每个 echo 语句的情况下复制表单代码。两者看起来都很麻烦。
有没有更好的方法来使用相同的表单代码?
空合并运算符非常适合这种情况。它基本上是
if(isset())
: 的简写
你正在考虑做这样的事情:
if (isset($customer['sitename'])) {
echo $customer['sitename'];
} else {
echo $someDefaultValue;
}
这可以缩短为:
echo $customer['sitename'] ?? $someDefaultValue;
既然你在默认情况下什么都不想要,你可以只使用
null
:
echo $customer['sitename'] ?? null;
即,如果有现有的站点名称,则输出它,否则什么也不输出。请注意,如果您所做的只是 echo,则可以使用简短的打开语法,因此您的代码将变为:
<INPUT TYPE="text" NAME="SITENAME" SIZE=35 VALUE="<?= $customer['sitename'] ?? null; ?>">
我认为最紧凑的方式是:
value="<?php echo $customer['sitename'] ?? ''; ?>"
此外,您应该清理该值,它可能包含有害字符,例如
"
:
value="<?php echo htmlspecialchars($customer['sitename'] ?? ''); ?>"