我已经完成了我的作业项目,但我正在尝试更进一步。我的项目要求我从表单中获取信息,将该信息链接到变量,然后在 MySQL 数据库中创建、删除、更新或查找该信息。
作为更新的一部分,我尝试仅更新地址、城市、州、邮政编码或电话号码的字段。但是,我只想更新来自表单中信息的字段。如果用户将上述字段之一留空,我不希望该空白字段更新数据库。因此,如果数据库中有信息并且用户在表单中留下空字段,我不希望该空字段清空数据库中的字段。
我尝试将每个字段设置为有一个 if 语句,以便如果信息不为空,它将更新数据库
这是我开始使用的代码。
$newPerson = "UPDATE `FriendsFamily`.`Contact`
SET
`address` = '$address',
`city` = '$city',
`state` = '$state',
`zip` = '$zip',
`phone` = '$phone'
where `fname` = '$fname'
and `lname` = '$lname'";
这是我尝试过的几种变体。
$newPerson = "更新FriendsFamily
。联系方式
if('$address' != null)
{
SET `address` = $address;
}
if('$city' != null)
{
SET `city` = $city;
}
if('$zip' != null)
{
SET `zip` = '$zip';
}
if('$phone' != null)
{
SET `phone` = '$phone'
}
where `fname` = '$fname'
and `lname` = '$lname'";
我也尝试过这个。
$newPerson = "更新FriendsFamily
。联系方式
if('$address' != null)
{
SET `address` = $address,
}
if('$city' != null)
{
SET `city` = $city,
}
if('$zip' != null)
{
SET `zip` = '$zip',
}
if('$phone' != null)
{
SET `phone` = '$phone',
}
where `fname` = '$fname'
and `lname` = '$lname'";
我想做的事是否可能,如果可以的话我该怎么做。
最佳答案
是的,这是可能的
但是,您的条件存在一些问题。首先,如果要打印字符串内变量的值,则需要使用双引号 ("
),而不是单引号 ('
)。This question包含对两者之间差异的很好的解释。
$str = 'foobar';
echo '$str'; // prints: $str
echo "$str"; // prints: foobar
由于您要将文字字符串 '$str'
与常量 null
进行比较,因此条件始终为 true
此外,如果您只是需要检查某个值是否为 null,或将其与另一个值进行比较,则将其转换为字符串可能会导致一些问题。相反,您可以直接比较变量,无需引号。
$foo = null;
$bar = 'bar';
if($str != null) {
echo '$foo is not null';
}
else {
echo '$foo is null';
}
if($bar != null) {
echo '$bar is not null';
}
else {
echo '$bar is null';
}
/*
* The above outputs:
* $foo is null
* $bar is not null
*/
我还建议看一下 php 中的 double and triple equal 和 PHP 自己的 comparison table 之间的区别,其中包含比较方法的很好的示例,例如 isset()
和 empty()
以及使用 ==
进行比较的一些怪癖
关于php - 不使用表单中的空字段更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46839766/