加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 21:55:11 所属栏目: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'
我有这个代码:

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','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比较您的代码,此示例和验证失败.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读