拼接sql语句参数绑定

 /**     * 事务封装方法     * @access public     * @param array $sqls 要执行的sql数组或语句     * @return boolean     */    public function transExecuteSql($sqls, $vals) {        try {            $this->startTrans();            if (is_array($sqls)) {                foreach ($sqls as $k => $sql) {                    if (!isNull($vals)) {                        foreach ($vals[$k] as $valKey => $val) {                            $sql = $this->bindParam($sql, $valKey + 1, $val);                        }                    }

$result = $this->db->execute($sql);                    if ($result === false) {//update 数据和原来如果一样的话返回的是0//                if(!$result)                        $this->rollBack();                        return false;                    }                }            } else {                $result = $this->db->execute($sqls);                if (!$result) {                    $this->rollBack();                    return false;                }            }            $this->commit();            return true;        } catch (\Exception $e) {            $this->rollBack();            //            $sxLog = new \Org\Log\SXLog();            $sxLog->recordSqlLogger($e);            return false;        }    }
/** * 绑定参数过程 * * @param string $sql    SQL语句 * @param int $location  问号位置 * @param mixed $var     替换的变量 * @param string $type   替换的类型 */public function bindParam(&$sql, $location, $var, $type = ‘STRING‘) {    switch ($type) {        //字符串        default:                    //默认使用字符串类型        case ‘STRING‘ :            $var = addslashes($var);  //转义            $var = "‘" . $var . "‘";      //加上单引号.SQL语句中字符串插入必须加单引号            break;        case ‘INTEGER‘ :        case ‘INT‘ :            $var = (int) $var;         //强制转换成int        //还可以增加更多类型..    }    //寻找问号的位置    //for ($i=1, $pos = 0; $i<= $location; $i++) {    $pos = strpos($sql, ‘?‘, $location + 1);    //}    //替换问号    $sql = substr($sql, 0, $pos) . $var . substr($sql, $pos + 1);

return $sql;}
时间: 2024-10-30 23:11:24

拼接sql语句参数绑定的相关文章

SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集

ALTER PROCEDURE [dbo].[usp_visit_detail](@siteid BIGINT, @Startime VARCHAR(15), @Endtime  VARCHAR(15), @Aflag  INT = 10,                                    --初始值为10,非10,则表示有传入参数 @Area   VARCHAR(20) = 'N',               -- --初始值为N,非N,则表示有传入参数 @Nflag  

java动态拼接sql语句并且执行时给sql语句的参数赋值

问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 1.就拿我上面的那个多条件模糊查询为例,第一步是拼接sql语句,先定义一个通用的sql语句,String sql = "select * from user where 1 = 1 ";这里添加where 1= 1是一个小技巧,方便后面sql语句的拼接. String sql = &quo

使用表达式避免拼接SQL语句

在SQL语句编写过程中,无论在存储过程中还是在程序中,有时为了使语句兼容全部情况与某字段的特殊情况,不得不拼接SQL字串 如下表 商品ID 类别ID 1 1 2 1 3 2 4 3 5 3 如果我们要写一个SQL,改SQL可通过类别ID获得该类别的商品ID,并且要求兼容传入类别ID为0时获得所有商品,我们不得不拼接SQL了 --@类别ID为传入的参数 DECLARE @Sql NVARCHAR(500) SET @Sql='SELECT * FROM 商品' IF(@类别ID!=0) SET @

java用字符串拼接SQL语句的特殊字符转义问题

在实际的项目开发中,往往会根据用户在界面的文本框中输入的信息,去数据库中做模糊查询.如果使用的是原始的JDBC和SQL,往往需要对用户的输入进行转义,避免生成的sql语法错误,或者防止SQL注入.比如对输入的%和_和',就需要进行转义,因为这3个字符是SQL的特殊字符,如果不处理会导致sql出错或者是查询数据不正确. 假如有这样1个查询请求,模糊查询标题中包含a%b_cc'd的记录,正确的sql应该是下面这样的: select * from t_sch_work_info t where t.t

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

获取oracle sql语句中绑定变量值的方法

在诊断 sql的性能问题时,我们有时候需要获取其绑定变量的实际值,然后将此实际值带入到sql语句当中,用原来的sql构成select语句(带where条件),实际的执行一下,看一下选择性如何. 本文就是说获取其绑定变量值的方法.本文的编写得到枯荣长老的帮助,在此表示感谢. 本文适用于与oracle 10G或者更高版本的db. alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss'; set linesize 400 col sql_

关于拼接SQL语句sqlMap的使用方法

1.为什么使用? 主要还是为了代码中获取到值,然后带入SQL语句中拼接查询 2.怎么使用? 1)bean继承了BaseEntity类,该类中有 /** * 自定义SQL(SQL标识,SQL内容) */ protected Map<String, String> sqlMap; @JsonIgnore @XmlTransient public Map<String, String> getSqlMap() { if (sqlMap == null){ sqlMap = Maps.ne

动态拼接SQL语句

1.参考官方文档 ? if:字符判断 ? choose (when, otherwise):分支选择 ? trim (where, set):字符串截取:其中where标签封装查询条件,set标签封装修改条件 ? foreach 2.if案例 1)在EmployeeMapper接口中添加一个方法: //携带了哪个字段,查询条件就带上哪个字段的值 public List<Employee> getEmployeeByConditionIf(Employee employee); 2).如果要写下

java反射获取注解并拼接sql语句

先建两个注解 分别为 Table 和 Column package com.hk.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.TYPE}) @Retention(Ret