如何减少php中的if条件?

如何减少php中的if条件?,php,Php,如何减少此代码: 此代码正在写入从sqlite表检索到的两条记录的总和: <?php if (isset($_POST['rname'])) { $rname = $_POST['rname']; $query = "SELECT SUM(bill) AS totalSum FROM w_daily WHERE name='$rname'"; $result = $db -> query($query); $row = $result->fetc

如何减少此代码: 此代码正在写入从sqlite表检索到的两条记录的总和:

<?php
if (isset($_POST['rname'])) {
    $rname = $_POST['rname'];
    $query = "SELECT SUM(bill) AS totalSum FROM w_daily WHERE name='$rname'";
    $result = $db -> query($query);
    $row = $result->fetchArray();
    $totalSum = $row['totalSum'];
}
if (isset($_POST['rname']) && $totalSum ) {
    $rname = $_POST['rname'];
    $query = "SELECT SUM(bill) AS paidSum FROM w_paid WHERE name='$rname'";
    $result = $db -> query($query);
    $row = $result->fetchArray();
    $paidSum = $row['paidSum'];
    echo $totalSum - $paidSum;
}
?>

使用嵌套的
if
测试
totalSum()

顺便说一句,您应该学习使用准备好的语句来防止SQL注入。请参见尝试以下操作:

if (isset($_POST[ 'rname' ])) {
    $rname = $_POST[ 'rname' ];
    $query = "
        SELECT ((SELECT SUM(bill) FROM w_daily WHERE name='$rname')
            - (SELECT SUM(bill) FROM w_paid WHERE name='$rname')) AS diffSum
            ";
    $result = $db->query($query);
    $row = $result->fetchArray();
    $diffSum = $row[ 'diffSum' ];
    echo $diffSum;
}


您可以创建一个类作为项目的实用工具,它获取、清理并返回它的值,这样您就不必每次都重复代码了。
例如,这里是我使用的
getParam
类,用于获取
GET
POST
参数。
此类返回一个对象,该对象包含
状态
参数值

class getparam
{

    public static function getParam($name, $method = 'POST', $encodeHTML = 0, $necessary = 1, $escape = 1)
    { 
        $result = (object) [];
        $result->status = 1;
        $method = strtoupper($method);
        $baseModelInstance = new baseModel();
        if ($method == "POST") {
            if (isset($_POST[$name])) {
                if (!is_array($_POST[$name])) {
                    $param = htmlspecialchars($_POST[$name]);
                    $param = stripslashes($param);
                    $param = $encodeHTML == 1 ? htmlentities($param, ENT_HTML5, 'UTF-8') : $param;
                    $param = trim($param);
                    $param = $escape == 1 ? $baseModelInstance->real_escape_string($param) : $param;
                } else {
                    $param = $_POST[$name];
                }
            } elseif ($necessary) {
                $result->status = 0;
                $result->message = "$name has not been setted";
                return $result;
            } else {
                $param = null;
            }
        } elseif ($method == "GET") {
            if (isset($_GET[$name])) {
                if (!is_array($_GET[$name])) {
                    $param = htmlspecialchars($_GET[$name]);
                    $param = stripslashes($param);
                    $param = $encodeHTML == 1 ? htmlentities($param, ENT_HTML5, 'UTF-8') : $param;
                    $param = trim($param);
                    $param = $escape == 1 ? $baseModelInstance->real_escape_string($param) : $param;
                } else {
                    $param = $_GET[$name];
                }
            } elseif ($necessary) {
                $result->status = 0;
                $result->message = "$name has not been setted";
                return $result;
            } else {
                $param = null;
            }
        } else {
            $result->status = 0;
            $result->message = "unknown method !";
            return $result;
        }


        if (is_null($param) && $necessary) {
            $result->status = 0;
            $result->message = "$name is null or empty";
            return $result;
        } else {
            $result->param = $param;
            return $result;
        }
    }
}
您可以根据需要拥有自己的类和方法

if (isset($_POST[ 'rname' ])) {
    $rname = $_POST[ 'rname' ];
    $query = "
        SELECT ((SELECT SUM(bill) FROM w_daily WHERE name='$rname')
            - (SELECT SUM(bill) FROM w_paid WHERE name='$rname')) AS diffSum
            ";
    $result = $db->query($query);
    $row = $result->fetchArray();
    $diffSum = $row[ 'diffSum' ];
    echo $diffSum;
}

class getparam
{

    public static function getParam($name, $method = 'POST', $encodeHTML = 0, $necessary = 1, $escape = 1)
    { 
        $result = (object) [];
        $result->status = 1;
        $method = strtoupper($method);
        $baseModelInstance = new baseModel();
        if ($method == "POST") {
            if (isset($_POST[$name])) {
                if (!is_array($_POST[$name])) {
                    $param = htmlspecialchars($_POST[$name]);
                    $param = stripslashes($param);
                    $param = $encodeHTML == 1 ? htmlentities($param, ENT_HTML5, 'UTF-8') : $param;
                    $param = trim($param);
                    $param = $escape == 1 ? $baseModelInstance->real_escape_string($param) : $param;
                } else {
                    $param = $_POST[$name];
                }
            } elseif ($necessary) {
                $result->status = 0;
                $result->message = "$name has not been setted";
                return $result;
            } else {
                $param = null;
            }
        } elseif ($method == "GET") {
            if (isset($_GET[$name])) {
                if (!is_array($_GET[$name])) {
                    $param = htmlspecialchars($_GET[$name]);
                    $param = stripslashes($param);
                    $param = $encodeHTML == 1 ? htmlentities($param, ENT_HTML5, 'UTF-8') : $param;
                    $param = trim($param);
                    $param = $escape == 1 ? $baseModelInstance->real_escape_string($param) : $param;
                } else {
                    $param = $_GET[$name];
                }
            } elseif ($necessary) {
                $result->status = 0;
                $result->message = "$name has not been setted";
                return $result;
            } else {
                $param = null;
            }
        } else {
            $result->status = 0;
            $result->message = "unknown method !";
            return $result;
        }


        if (is_null($param) && $necessary) {
            $result->status = 0;
            $result->message = "$name is null or empty";
            return $result;
        } else {
            $result->param = $param;
            return $result;
        }
    }
}