Server : nginx/1.20.1 System : Linux iZ2ze9ojcl78uluczwag69Z 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Thu Apr 8 19:01:30 UTC 2021 x86_64 User : www ( 1000) PHP Version : 7.3.28 Disable Function : passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/0531yanglao.com/vendor/topthink/think-orm/src/db/concern/ |
<?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; } }