经过优化的PHP代码可进行多次输入检查

时间:2018-07-09 09:11:51

标签: php

有一个PHP更新表单,用户可以在其中更新其记录。下面的代码对我来说似乎是多余的。如何优化此PHP代码?另外,我在不同的表中有管理员用户名和电子邮件,在不同的表中有管理员详细信息列(例如名字,姓氏,性别,出生日期)。检查用户名和电子邮件是否都已更新,或者是否两者都更新并在数据库中进行相应更新的最佳方法是什么。

下面是我的源代码:

   if(isset($_POST['btnClick']) {
    $f_name = NULL;
    $l_name = NULL;
    $username = NULL;
    $email = NULL;
    $gender = NULL;
    $dob = NULL;

    $f_name = filter_input(INPUT_POST, "f_name", FILTER_SANITIZE_STRING);
    $l_name = filter_input(INPUT_POST, "l_name", FILTER_SANITIZE_STRING);
    $username = filter_input(INPUT_POST, "username", FILTER_SANITIZE_STRING);
    $email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
    $gender = filter_input(INPUT_POST, "gender", FILTER_VALIDATE_STRING);
    $dob = filter_input(INPUT_POST, "dob", FILTER_VALIDATE_STRING);

    try {

        if(isset($username) && $username != $_SESSION['username']) {
            $sqlUpdate = "UPDATE admins SET username=:username WHERE admin_id=:admin_id";
            /*Update code here...*/
            echo "Username changed value inputted";
        }  
        else if(isset($email) && $email != $_SESSION['email']) {
            $sqlUpdate = "UPDATE admins SET username=:username WHERE admin_id=:admin_id";
            /*Update code here...*/
            echo "email change value inputted";
        } 
        else if(isset($username) && isset($email)) {
            /*Update both records */
        }

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

<?php
try {
    if (isset($username) && $username != $_SESSION['username']) {
        $fieldsToUpdate[] = 'username=:username';
        $updatedFields[] = 'Username';
    }

    if (isset($email) && $email != $_SESSION['email']) {
        $fieldsToUpdate[] = 'email=:email';
        $updatedFields[] = 'Email';
    }

    if (isset($fieldsToUpdate) && count($fieldsToUpdate) > 0) {
        $sqlUpdate = "UPDATE admins SET " . implode($fieldsToUpdate, ', ') . " WHERE admin_id=:admin_id";
        /*Update code here...*/
        $finalMessage = 'Fields: ' . implode($updatedFields, ', ') . ' have been updated.';
    }
}

PS:这是一个示例代码,您如何使用PHP数组和implode()函数优化代码以运行单个查询以更新单个或多个字段。