当前路径:vendor/topthink/think-orm/src/db/concern/ParamsBind.php <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: liu21st <liu21st@gmail.com> // +---------------------------------------------------------------------- declare (strict_types = 1); namespace think\db\concern; use PDO; /** * 参数绑定支持 */ trait ParamsBind { /** * 当前参数绑定 * @var array */ protected $bind = []; /** * 批量参数绑定 * @access public * @param array $value 绑定变量值 * @return $this */ public function bind(array $value) { $this->bind = array_merge($this->bind, $value); return $this; } /** * 单个参数绑定 * @access public * @param mixed $value 绑定变量值 * @param integer $type 绑定类型 * @param string $name 绑定标识 * @return string */ public function bindValue($value, int $type = null, string $name = null) { $name = $name ?: 'ThinkBind_' . (count($this->bind) + 1) . '_' . mt_rand() . '_'; $this->bind[$name] = [$value, $type ?: PDO::PARAM_STR]; return $name; } /** * 检测参数是否已经绑定 * @access public * @param string $key 参数名 * @return bool */ public function isBind($key) { return isset($this->bind[$key]); } /** * 参数绑定 * @access public * @param string $sql 绑定的sql表达式 * @param array $bind 参数绑定 * @return void */ public function bindParams(string &$sql, array $bind = []): void { foreach ($bind as $key => $value) { if (is_array($value)) { $name = $this->bindValue($value[0], $value[1], $value[2] ?? null); } else { $name = $this->bindValue($value); } if (is_numeric($key)) { $sql = substr_replace($sql, ':' . $name, strpos($sql, '?'), 1); } else { $sql = str_replace(':' . $key, ':' . $name, $sql); } } } /** * 获取绑定的参数 并清空 * @access public * @param bool $clear 是否清空绑定数据 * @return array */ public function getBind(bool $clear = true): array { $bind = $this->bind; if ($clear) { $this->bind = []; } return $bind; } }
相关源码
- 可旋转的彩色立方体C#源代码2021-10-29
- 在线考试系统2021-10-15
- EduSoho开源网校系统源码2019-06-27
- 仿拼多多小程序商城源码2019-06-06
- PHP5网站运行监测系统源码2017-04-14
关于我们 | 顾问团队 | 发展历程 | 联系我们 | 源码上传
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2022. 京ICP备09089570号 | 京公网安备11010702000869号
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2022. 京ICP备09089570号 | 京公网安备11010702000869号