如何减少php中的if条件?
如何减少此代码: 此代码正在写入从sqlite表检索到的两条记录的总和:如何减少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
<?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;
}
}
}