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可以进行优化. ...
随机推荐
- jquery新窗口打开链接
第一种:下面的代码是针对m35ui这个样式下的a都是在新窗口打开 <script type="text/javascript"> jQuery(document ...
- 解读QML之一
http://cache.baiducontent.com/c?m=9d78d513d98002b8599dcb201a17a7374408c6347691c4523f8a9c12d522195646 ...
- include和 merge
include和merge标记的作用主要是为了解决layout的重用问题. 比如我们有三四个Activity但是他们都要用到同一个样式的标题栏,虽然我们把一样的代码copy个三四遍也没关系,但实在是太 ...
- androidstudio 问题
Error:(1, 1) A problem occurred evaluating project ':app'. > Failed to apply plugin [id 'com.andr ...
- 拖动滚动条时某一处相对另一处固定不动(position:fixed)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- CodeForces--TechnoCup--2016.10.15--ProblemB--Bill Total Value(字符串处理)
Bill Total Value time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- Linux学习 -- 系统管理
1 进程管理 判断服务器健康状态 top [选项] 查看系统中所有进程 ps aux BSD格式 ps -le Linux格式 pstree [选项] -p 显示PID - ...
- android 5.1 API简介
android 5.1介绍: http://developer.android.com/about/versions/android-5.1.html?utm_campaign=lollipop-51 ...
- 【spring boot】SpringBoot初学(2) - properties配置和读取
前言 只是简单的properties配置学习,修改部分"约定"改为自定义"配置".真正使用和遇到问题是在细看. 一.主要 核心只是demo中的: @Proper ...
- 关于python的可变和不可变对象
在python中所有都是对象,在python中只有list和dict是可变对象,其他都是不可变对象. 具体参照:http://www.cnblogs.com/lovemo1314/archive/20 ...