表单中来自mysql查询的PHP变量,当为null时

问题描述 投票:0回答:2

我有一个 html 表单,用于编辑 mysql 表中的记录。 在编辑的情况下,我使用查询返回的记录的当前值预填充表单,如下所示:

<INPUT TYPE="text" NAME="SITENAME" SIZE=35 VALUE="<?php echo $customer['sitename']; ?>">

我想使用相同的表单来创建新记录,但是当然不会为 sql 查询数组分配任何值,因此该表单将不起作用。 我知道我可以为每个输入或单个输入放置一个 IF 或 ISSET,但随后必须在没有每个 echo 语句的情况下复制表单代码。两者看起来都很麻烦。

有没有更好的方法来使用相同的表单代码?

php mysql arrays forms null
2个回答
1
投票

空合并运算符非常适合这种情况。它基本上是

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; ?>">

0
投票

我认为最紧凑的方式是:

value="<?php echo $customer['sitename'] ?? ''; ?>"

此外,您应该清理该值,它可能包含有害字符,例如

"

value="<?php echo htmlspecialchars($customer['sitename'] ?? ''); ?>"
© www.soinside.com 2019 - 2024. All rights reserved.