PHP处理多表查询时的SQL语句拆分与重新组装
在自己写框架时候会发现,多表查询组装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"; ?>
PHP处理多表查询时的SQL语句拆分与重新组装的更多相关文章
- SQL语句查询时防止SQL语句注入的方法之一
1.传参时有可能出现SQL语句注入 StringBuffer sb = new StringBuffer(); if(StringUtils.isNotBlank(areaCode)) { sb.ap ...
- 从dm_exec_query_stats系统表查询耗时的SQL语句
语句示例: s2.dbid , s1.total_worker_time / s1.execution_count AS [Avg CPU Time] , ( , ( ( THEN ( LEN(CON ...
- 【T-SQL基础】01.单表查询-几道sql查询题
概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...
- 外部表查询时出现ORA-29913和ORA-29400错误
create table t_ext_tab(id char(1),name char(6)) organization external( type oracle_loader default di ...
- 如何查找MySQL中查询慢的SQL语句
如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...
- 如何查找MySQL中查询慢的SQL语句(转载)
转载自https://www.cnblogs.com/qmfsun/p/4844472.html 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那 ...
- Mariadb/MySQL数据库单表查询基本操作及DML语句
Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...
- SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句
SQLServer中查询表结构(表主键 .列说明.列数据类型.所有表名)的Sql语句 1.查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType=' ...
- Mysql中 查询慢的 Sql语句的记录查找
Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...
随机推荐
- iptables防火墙详解
iptables常用命令 iptables -nv -L 查看iptables列表 iptables -F 清空iptables规则 iptables-save > /etc/sysconfig ...
- mxml日期显示使用
mxml代码: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx= ...
- .Net日期处理之格式化
一.默认格式 2015/9/3 9:04:31 二.格式2 2015年9月3日 9:28:51 三.格式3 2015年9月3日 9:31 四.格式4 2015/9/3 9:39:01 五.格式5 20 ...
- 转: Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) - Enterprise Edition
http://www.cnblogs.com/xqzt/p/4395053.html Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) - Ent ...
- MSG 结构
MSG 消息结构 在 Windows 程序中,消息是由 MSG 结构体来表示的. 结构原型: typedef struct tagMSG { HWND hwnd; UINT message; ...
- zepto.js 学习之(一)
中文文档:http://mweb.baidu.com/zeptoapi/#attr
- 转:WebDriver(Selenium2) 判断页面是否刷新的方法
public static boolean waitPageRefresh(WebElement trigger) { int refreshTime = 0; boolean isRefresh = ...
- “inno setup打包,win7下安装没有桌面快捷方式,xp下安装正常”
修改桌面的快捷键为选中就行了:Flags: checkablealone;在[Tasks]下面修改代码如下:Name: "desktopicon"; Description: &q ...
- Linux中防火墙centos
一般的防火墙用下面这些简单的配置都能达到目的 1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开 ...
- HBase集群安装
1.HBase的机群搭建过程(在原来的hadoop0上的HBase伪分布基础上进行搭建)1.1 集群结构,主节点(hmaster)是hadoop0,从节点(region server)是hadoop1 ...