php - SQL - 在表格中显示查询数据并在屏幕上按列排序
问题描述
我的数据库中有一个巨大的表,我希望能够显示内容并按某些列过滤它。
为此,我选择了一个重新加载页面的过滤器,并使用新的条件和参数重写 sql 查询,如下所示:
$params = [];
$sql = "SELECT * FROM pricing";
if((isset($filter1) && $filter1!="") || (isset($filter2) && $filter2!="") || (isset($filter3) && $filter3!="") || (isset($filter4) && $filter4!="")){
$sql .= " WHERE ";
}
if(isset($filter1) && $filter1!=""){
$sql .= "supplier=?";
array_push($params,$filter1);
}
if((isset($filter1) && $filter1!="") && ((isset($filter2) && $filter2!="") || (isset($filter3) && $filter3!="") || (isset($filter4) && $filter4!=""))){
$sql .= " AND ";
}
if(isset($filter2) && $filter2!=""){
$params1 = [$filter2];
$sql1 = "SELECT * FROM product_categories WHERE category_id=?";
$stmt = DB::run($sql1,$params1);
$count = $stmt->rowCount();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$product_id = $row['product_id'];
array_push($params,$product_id);
}
$sql .= "product=?";
for($i=1; $i<$count; $i++){
$sql .= " OR product=?";
}
}
if((isset($filter2) && $filter2!="") && ((isset($filter3) && $filter3!="") || (isset($filter4) && $filter4!=""))){
$sql .= " AND ";
}
if(isset($filter3) && $filter3!=""){
$params1 = ['%'.$filter3.'%'];
$sql1 = "SELECT * FROM products WHERE product_name LIKE ? LIMIT 50";
$stmt1 = DB::run($sql1,$params1);
$count = $stmt1->rowCount();
while($row = $stmt1->fetch(PDO::FETCH_ASSOC)){
$product_id = $row['id'];
array_push($params,$product_id);
}
$sql .= "product=?";
for($i=1; $i<$count; $i++){
$sql .= " OR product=?";
}
}
if((isset($filter3) && $filter3!="") && (isset($filter4) && $filter4!="")){
$sql .= " AND ";
}
if(isset($filter4) && $filter4!=""){
$sql .= "model_no LIKE ?";
array_push($params,'%'.$filter4.'%');
}
但是,我想添加的过滤器越多,这就越复杂,而且不一定效果最好。
在屏幕上对表格进行排序有更好的选择吗?我不是在寻找解决方案,只是朝着正确的方向前进会很棒,我一直在寻找一段时间,但没有找到我想要的东西。
解决方案
推荐阅读
- apache-kafka - 如何将日志从 Google Stackdriver 发送到 Kafka
- javascript - 我如何从javascript中的url生成二维码
- sql-server - 我需要一个不属于调用事务的存储过程
- r - 允许在 Shiny 中标记输入
- asp.net-core - 使用内置客户端路由 .NET 5 处理服务器端路由错误
- javascript - 在移动/iOS 上无法在 Paypal 智能按钮块中获取 POST 数据
- android - 自定义 TextView 对齐
- java - 使用 JPA 将表列与多个表的列映射
- amazon-web-services - AWS:如何为自定义域名配置 Cloudfront
- django - DRF 中的自定义未授权错误响应