• 拼接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;
    }
  • 相关阅读:
    Linux双线双网卡双IP双网关设置方法
    Docker 清理命令集锦
    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境
    Centos6.x 安装vnc
    KVM虚拟化技术
    ELK监控系统nginx / mysql慢日志
    ELK初学搭建(elasticsearch)
    (转)Linux 磁盘IO性能测试
    hadoop2.9.2 调整jvm
    (转)shell调试方法
  • 原文地址:https://www.cnblogs.com/wenxinphp/p/6701876.html
Copyright © 2020-2023  润新知