php sql 类似 mybatis 传参
来源:互联网 发布:乐视网络电视绿色版 编辑:程序博客网 时间:2024/06/06 08:57
PHP sql 处理上,没有类似于 java mybatis 的工具,导致进行一些sql 处理时,会有诸多不便,
楼主抽时间写了一个 php 类似 mybatis 的sql 工具,省去了拼装sql 的时间
代码如下
<?php $sqlStartTarg = "#{";$sqlEndTarg = "}";/** * 替换 #{key} 部分 * Enter description here ... * @param $valuePart * @param $valueArray */function replaceValue($valuePart, $valueArray){global $sqlStartTarg, $sqlEndTarg;$resultValue = null;$key = str_replace($sqlStartTarg, "", $valuePart);$key = str_replace($sqlEndTarg, "", $key);$key = trim($key);if(array_key_exists($key, $valueArray)){$resultValue = $valueArray[$key];}else{$resultValue = "NULL_VALUE";}return $resultValue;}/** * 预处理sql,替换 #{key..} 部分为实际值 * 本方法不做特殊字符处理,如遇特殊字符,请自行在传递的值中做处理 * Enter description here ... * @param $sql 原始sql * @param $parameter 传递参数数组 */function preparedSql($sql, $parameter){global $sqlStartTarg, $sqlEndTarg;$resultSql = "";//为避免参数值包含 #{...} 部分,所以做分组处理$lastSql = $sql;//首先,查询 #{while($startIndex = strpos($lastSql, $sqlStartTarg)){//包含参数//参数前部分$frontPart = substr($lastSql, 0, $startIndex);//参数部分$endIndex = strpos($lastSql, $sqlEndTarg, $startIndex);if($endIndex){//已处理部分$valueLength = $endIndex - $startIndex + 1;$valuePart = substr($lastSql, $startIndex, $valueLength);//#{key} 部分$value = replaceValue($valuePart, $parameter);$resultSql .= $frontPart . $value;//参数后未处理部分if($endIndex + 1 >= strlen($lastSql)){$lastSql = "";}else{ $lastSql = substr($lastSql, $endIndex + 1);}}else{$resultSql .= $lastSql;$lastSql = "";}}if($lastSql != ""){$resultSql.= $lastSql;}return $resultSql;}/** * 正则匹配方式不可取 * 有可能参数值中包含 #{**},此时,替换会出现异常 * 但此方法保留 * Enter description here ... */function preparedSql1(){$sql = "select user_id, user_name, `password` from `user_info` where password = '#{password}' ";$sql .= "and company_name = '#{company_name}' and status = #{status} and comment = '#{comment}' ";//先找出 sql 中包含的 所有参数/*$matchArray = array();$reg = "/\#\{[^\}]*\}/";preg_match_all($reg, $sql, $matchArray);$resultJson = json_encode($matchArray);//phpAlert($resultJson);print_r($matchArray);echo "$resultJson";*/}/** * 测试 * Enter description here ... */function test_db(){$sql = "select user_id, user_name, `password` from `user_info` where password = '#{password}' ";$sql .= "and company_name = '#{company_name}' and status = #{status} and comment = '#{comment}' ";$valueArray = array();$valueArray['password'] = "|#{password}|";$valueArray['company_name'] = "|company_name|";$valueArray['comment'] = "|comment|";$valueArray['status'] = "|status|";$sql = preparedSql($sql, $valueArray);print_r($sql);}?>
0 0
- php sql 类似 mybatis 传参
- 类似Mybatis的sql语句
- 类似mybatis的功能
- mybatis补充教程之一:在控制台显示sql语句,类似hibernate show_sql.
- mybatis补充教程之一:在控制台显示sql语句,类似hibernate show_sql.
- sql类似面试题
- mybatis-sql
- Mybatis-sql
- mybatis sql
- sql mybatis
- php 实现 类似 inet_addr inet_ntoa
- php类似JS中的uriEncode
- mybatis之类似级联功能的使用
- mybatis之类似级联功能的使用
- Sql 类似?: 功能的函数
- SQL Server 类似Oracle DBLink
- MyBatis--动态SQL---sql片断
- php折线图生成函数(类似股票行情)
- 文章标题
- CentOS7安装phpMyAdmin
- HIVE-DDL
- Java笔记
- ubuntu14.04系统nodejs express开发教程第一篇:环境搭建&&项目初步
- php sql 类似 mybatis 传参
- 参数估计:最大似然、贝叶斯与最大后验
- Octave 命令
- html的块级block、内联inline、内联块级inline-block元素基础
- 面向对象1 类与对象
- iptables 常用功能总结
- MongoDB——分片技术
- lintcode:First Bad Version
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象