在自己写框架时候会发现,多表查询组装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语句拆分与重新组装的更多相关文章

  1. SQL语句查询时防止SQL语句注入的方法之一

    1.传参时有可能出现SQL语句注入 StringBuffer sb = new StringBuffer(); if(StringUtils.isNotBlank(areaCode)) { sb.ap ...

  2. 从dm_exec_query_stats系统表查询耗时的SQL语句

    语句示例: s2.dbid , s1.total_worker_time / s1.execution_count AS [Avg CPU Time] , ( , ( ( THEN ( LEN(CON ...

  3. 【T-SQL基础】01.单表查询-几道sql查询题

    概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...

  4. 外部表查询时出现ORA-29913和ORA-29400错误

    create table t_ext_tab(id char(1),name char(6)) organization external( type oracle_loader default di ...

  5. 如何查找MySQL中查询慢的SQL语句

    如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...

  6. 如何查找MySQL中查询慢的SQL语句(转载)

    转载自https://www.cnblogs.com/qmfsun/p/4844472.html 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那 ...

  7. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  8. SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句

    SQLServer中查询表结构(表主键 .列说明.列数据类型.所有表名)的Sql语句 1.查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType=' ...

  9. Mysql中 查询慢的 Sql语句的记录查找

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

随机推荐

  1. beagleboneblack HDMI不能显示

    beagleboneblack  接上HDMI到电视上,没有显示画面 看了资料之后才知道 http://elinux.org/Beagleboard:BeagleBoneBlack_HDMI#Conn ...

  2. IMP指针

    可能大家一直看到有许多朋友在Runtime相关文章中介绍IMP指针的概念,那么IMP究竟有什么实际作用呢?让我们先从一个函数看起来. Method Swizzling 如果对Runtime有一定了解的 ...

  3. 【转】从1到N这N个数中1的出现了多少次?

    给定一个十进制整数N,求出从1到N的所有整数中出现"1"的个数. 例如:N=2,1,2出现了1个"1". N=12,1,2,3,4,5,6,7,8,9,10,1 ...

  4. php下载文件的一种方式

    <?php ob_start(); // $file_name="cookie.jpg"; $file_name="abc.jpg"; //用以解决中文不 ...

  5. Loadrunner性能测试分类详(二)

    一.基准测试 有基础的标准,这样能通过对比发现系统的不同点与变化. 1.可以再指定的标准下通过基准测试建立一个性能基准,这样以后当系统的环境.参数发生变化后,再进行一次相同标准下的测试,即可看出变化对 ...

  6. FlashDevelop调试Air出错

    按下F5调试命令行窗口出现错误: Starting AIR Debug Launcher... invalid application descriptor: Unknown namespace: h ...

  7. Bootstrap学习 - 组件

    下拉菜单 注意:需要先引入jQuery.js再引入bootstrap.js(依赖前者) <div class="dropdown pull-right"> //默认就是 ...

  8. Linux学习 -- Shell基础 -- Bash变量

    变量 默认是字符串型,数值型需要显示指定 等号两侧都不能有空格 单引号:原始字符串  双引号:保留转义 命令结果作为值:反引号 或 $() 环境变量一般用大写 自定义变量 变量定义    name=& ...

  9. Linux设置某软件开机自动启动的方法

    方法一 将启动命令写到系统启动时会自动调用的脚本中 echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d ...

  10. [原]左右的移动&lt;&lt;&gt;&gt;&lt;&gt;jQuery的实现

    $(function () {             $('#toAllLeft').click(function () {                 $('#se1 option').app ...