• 拼接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 OrgLogSXLog();
    $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;
    }
  • 相关阅读:
    [iOS]delegate和protocol
    Objective-c中@interface、@implementation、@protocal
    iOS应用的真机调试
    2016最新Java笔试题集锦
    Java面试题相关内容
    JSP面试题及答案
    JAVA面试题相关基础知识
    mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI
    Java中equals和==的区别
    java的Arrays类的应用
  • 原文地址:https://www.cnblogs.com/wenxinphp/p/6701876.html
Copyright © 2020-2023  润新知