php - 以条件为参数的函数问题
问题描述
我遇到了我想使用的这个功能,但我想把它简称为 DESC。我尝试了很多方法都没有成功。我试图创建第三个参数,但这不起作用。请问有人可以帮忙吗?
public function getRows($conditions = array()){
$sql = 'SELECT ';
$sql .= array_key_exists("select",$conditions)?$conditions['select']:'*';
$sql .= ' FROM '.$this->tblName;
if(array_key_exists("where",$conditions)){
$sql .= ' WHERE ';
$i = 0;
foreach($conditions['where'] as $key => $value){
$pre = ($i > 0)?' AND ':'';
$sql .= $pre.$key." = '".$value."'";
$i++;
}
}
if(array_key_exists("order_by",$conditions)){
$sql .= ' ORDER BY '.$conditions['order_by'];
}
if(array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){
$sql .= ' LIMIT '.$conditions['start'].','.$conditions['limit'];
}elseif(!array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){
$sql .= ' LIMIT '.$conditions['limit'];
}
$result = $this->db->query($sql);
if(array_key_exists("return_type",$conditions) && $conditions['return_type'] != 'all'){
switch($conditions['return_type']){
case 'count':
$data = $result->num_rows;
break;
case 'single':
$data = $result->fetch_assoc();
break;
default:
$data = '';
}
}else{
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
}
}
return !empty($data)?$data:false;
}
解决方案
您可以向传入的数组添加一个额外的“参数”$conditions
并在以下代码中检测它...
if(array_key_exists("order_by",$conditions)){
$sql .= ' ORDER BY '.$conditions['order_by'];
if(array_key_exists("sort_order",$conditions)){
$sql .= ' '.$conditions['sort_order'];
}
所以当你调用它时添加一个'sort_order'元素......
$conditions['where'] = array( 'id' => $_POST['id']);
$conditions['order_by'] = 'id';
$conditions['sort_order'] = 'desc';
推荐阅读
- azure - Azure Synapse Studio 未加载 - 由于服务器错误,无法加载一个或多个资源,错误代码 500
- mysql - 如何在 JetBrains DataGrip 中显示列,如 phpMyAdmin?
- typescript - 在 vue3 中编译打字稿
- c# - 将对象添加到字典的性能问题
- go - Golang语言,结合匿名结构的一些字段?
- python - 为什么我的python程序跳过输入函数
- flutter - 如何使用 Flutter 在 iOS 中指定 Google Map 版本?
- sql - 循环组模式中的密集排名
- javascript - html 文件中的脚本标记中的 VSCode 中缺少建议
- django - 仅当地图缩放/平移停止时传单矢量网格调用 url