在自己写框架时候会发现,多表查询组装SQL语句<?php
$pre = "pre_";
$aid = "44";$data = array("user.username,comment.uid,article.aid","user,comment,article","user.uid=comment.uid AND article.aid=comment.aid AND comment.aid=$aid");//字段判断
if($data["0"] === "*"){$filed = "*";
}else{$arr = explode(",",$data["0"]);$length = count($arr);for($i=0; $i<$length; $i++){$filed .= $pre.$arr[$i].",";}$filed = substr($filed, 0,-1);
}//表名判断
if(strpos($data["1"],",") > 1){$arr = explode(",",$data["1"]);$length = count($arr);for($i=0; $i<$length; $i++){$table .= $pre.$arr[$i].",";}$table = substr($table, 0,-1);
}else{$table = $pre.$data["1"];
}//条件判断
$one = explode(" AND ", $data["2"]);
$len1 = count($one);
for($i=0; $i<$len1; $i++){$two[] = explode("=", $one[$i]);
}
$len2 = count($two);for($i=0; $i<$len2; $i++){for($j=0; $j<$len2-1; $j++){if(strpos($two[$i][$j],".") > 1){$where .= $pre.$two[$i][$j]."=";}else{$where .= $two[$i][$j];}}
}
$where = explode("=",$where);$len3 = count($where);for($i=0; $i<$len3; $i++){if($i%2 == 0){$c .=$where[$i]."=";}else{$c .=$where[$i]." AND ";}
}
$where = substr($c, 0,-4);echo $query = "SELECT $filed FROM $table WHERE $where";?>

  

转载于:https://www.cnblogs.com/chenshuo/p/3619509.html

PHP处理多表查询时的SQL语句拆分与重新组装相关推荐

  1. 查询和删除表中重复数据sql语句

    查询和删除表中重复数据sql语句 (一) 1.查询表中重复数据.select * from people where peopleId in (select   peopleId  from   pe ...

  2. sql server 运维时CPU,内存,操作系统等信息查询(用sql语句)

    原文:sql server 运维时CPU,内存,操作系统等信息查询(用sql语句) 我们只要用到数据库,一般会遇到数据库运维方面的事情,需要我们寻找原因,有很多是关乎处理器(CPU).内存(Memor ...

  3. Oracle数据库表连接查询并分页SQL语句提示未明确定义列

    Oracle数据库表连接查询并分页SQL语句提示未明确定义列 两张表中的字段: t_product t_category product_id category_id product_name cat ...

  4. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  5. sql server(MsSql)字段命名,表命名,视图命名,SQL语句书写参考

    @[TOC](sql server(MsSql)字段命名,表命名,视图命名,SQL语句书写参考) 对我个人来说,字段命名,表命名,视图命名,SQL语句书写都有一套自己的习惯,可以减少维护成本.减少不必 ...

  6. SQLSERVER数据库、表的创建及SQL语句命令

    SQLSERVER数据库.表的创建及SQL语句命令 备份,还原,创建,删除,查询,修改 ** 数据库定义及操作命令:** 按照数据结构来组织.存储和管理数据的仓库.由表.关系以及操作对象组成,把数据存 ...

  7. 实现分页统计记录总数时: sql语句的异常

    实现分页统计记录总数时: sql语句的异常 sql: select count(n) from dblog n where n.deleteflag=0: 这句话在jdbc 环境和 mysql自带查询 ...

  8. mysql 怎么查询慢sql语句_Mysql中 查询慢的 Sql语句的记录查找

    Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...

  9. Database之SQLSever:SQLSever数据表管理(GUI法/SQL语句命令法两种方法实现建立表、修改表,以及增、删、改、查)之详细攻略

    Database之SQLSever:SQLSever数据表管理(GUI法/SQL语句命令法两种方法实现建立表.修改表,以及增.删.改.查)之详细攻略 目录 一.两种方法建立表.修改表,插入多条数据记录 ...

  10. oracle添加表的索引,oracle批量添加指定表前缀的索引SQL语句

    oracle批量添加指定表前缀的索引SQL语句 需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 ##需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 declare --用户名 ...

最新文章

  1. 描写火车站场景_描写火车站热闹场面的作文300字
  2. github 头像生成 java_Java 如何根据头像地址生成圆形的头像?
  3. 在Web浏览器中显示Spring应用程序启动的进度
  4. 学习Spring Boot:(五)使用 devtools热部署
  5. 学会这篇文章分享的知识,你就超过了90%的测试人
  6. iOS 8 Xcode6 设置Launch Image 启动图片转
  7. FreeCAD源码分析:Sketcher模块
  8. 微信小程序-服务通知的订阅与下发(基于云调用)
  9. PHP根据出生日期计算年龄
  10. 数据分析:某地PM2.5数据分析
  11. django-haystack 对 多对多字段( ManyToManyField )进行索引
  12. Surface Pro 4 无限重启的解决方法
  13. 4.23 使用数据条功能使数值更加直观 [原创Excel教程]
  14. JAVA我的世界怎么做成就_Editing 成就/Java版
  15. 操作系统4小时速成:内存管理,程序执行过程,扩充内存,连续分配,非连续分配,虚拟内存,页面替换算法
  16. C++之struct构造函数
  17. 阿里CTO王坚:商业进化的四个关键词
  18. Aziz 的 UiPath 工具面试经验
  19. 记一次el-select远程搜索默认数据回显问题
  20. python发微信-python实现向微信用户发送每日一句

热门文章

  1. 西农JAVA作业提交系统_Java程序员需要知道的操作系统知识汇总(持续更新)
  2. 叛乱联机服务器未响应,叛乱沙漠风暴开服注意事项及操作指南经验一览
  3. 单板计算机图片大全,最强单板计算机UP Board之Windows10完全版、Ubuntu、Andriod系统体验 | 爱板网...
  4. mysql权限查看_教您如何查看MySQL用户权限
  5. C/C++[codeup 1967]数组逆置
  6. 翻译: TensorFlow 2.0 中的符号和命令式 API 是什么?
  7. 手动调整vector容器空间的方式
  8. #include《》和#include“”的区别
  9. Django搭建网站笔记
  10. Linux-Anaconda-pycharm 安装 配置