Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对多输入检查的优化PHP代码_Php - Fatal编程技术网

针对多输入检查的优化PHP代码

针对多输入检查的优化PHP代码,php,Php,有一个PHP更新表单,用户可以在其中更新记录。下面提到的代码在我看来是多余的。如何优化此PHP代码?另外,我在不同的表中有管理员用户名和电子邮件,在不同的表中有管理员详细信息列(如名字、姓氏、性别、dob)。检查用户名和电子邮件是否都已更新或其中任何一个是否已更新并在数据库中相应更新的最佳方法是什么 下面是我的源代码: if(isset($_POST['btnClick']) { $f_name = NULL; $l_name = NULL; $username =

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

下面是我的源代码:

   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 */
        }

您可以这样做:

<?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.';
    }
}

@Martijn请避免将可能在此处关闭的问题重定向到codereview。这是一个包含假想/存根代码的离题代码。@MathiasEttinger这不是假想代码。我只是想即兴编写代码,并想知道这里的优化技术。@Paradox
/*这里更新代码…*/
是假设性的,在CR上接收效果会很差。好的!那里有更多的代码。为了缩短代码,我对该部分进行了注释。