php 变量不存在,当PHP不存在时,PHP跳过函数变量

标签:php

我有这个代码:

public function changeProfile ($first_name, $last_name, $email, $phone, $password,

$bank_name, $bank_account_number, $bank_account_name,

$gender, $birthday, $address, $area, $default_type) {

$this->connect();

$data = array ('first_name' => $this->escapeString($first_name),

'last_name' => $this->escapeString($last_name),

'email' => $this->escapeString($email),

'phone' => $this->escapeString($phone),

'password' => $this->escapeString($password),

'bank_name' => $this->escapeString($bank_name),

'bank_account_number' => $this->escapeString($bank_account_number),

'bank_account_name' => $this->escapeString($bank_account_name),

'gender' => $this->escapeString($gender),

'birthday' => $this->escapeString($birthday),

'address' => $this->escapeString($address),

'area' => $this->escapeString($area),

'default_type' => $this->escapeString($default_type));

$this->update('user', $data, 'email = "'.$email.'" AND phone = "'.$phone.'"');

$res = $this->getResult();

}

现在,我有这样的问题:

我想’跳过’函数上的一些变量,例如$birthday和$gender,这样就不会在SQL UPDATE上处理它并让当前数据保持原样.

我的意思是,如果$birthday和$gender数据不存在,则不要更新表中的现有数据.因为当我尝试在函数上使用NULL作为变量时,我的数据被替换为空数据.

如何管理这种情况没有多个if检查每个变量?

谢谢

解决方法:

如果你有选项,你应该用一个参数数组替换你的函数的参数列表,例如:

public function changeProfile($variables)

{

$this->connect();

$data = array();

foreach ($variables as $key => $value) {

$data[$key] = $this->escapeString($value);

}

// Validation?

if (!isset($data['email'], $data['phone'])) {

die('Required fields missing.');

}

$this->update('user', $data, 'email = "' . $data['email'] . '" AND phone = "' . $data['phone'] . '"');

$res = $this->getResult();

}

这假设SQL查询是静态的.如果需要,您还可以为其添加更多字段.

然后你会这样称呼它:

$test->changeProfileUpdated([

'first_name' => 'john',

'last_name' => 'doe',

'email' => 'example@example.com',

'phone' => 12345,

'password' => 'password1',

'bank_name' => 'ANZ',

'bank_account_number' => '123-456',

'bank_account_name' => 'J DOE',

'gender' => 'M',

'birthday' => '1/2/13',

'address' => '12 Fake St',

'area' => 'Area 51',

'default_type' => 'Some default'

]);

Here’s a demo比较您的代码,此示例和验证失败.

标签:php

来源: https://codeday.me/bug/20190727/1556308.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值