扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:谢启东编译 来源:天极开发 2007年10月21日
关键字: Linux
/** * 把query准备为一个存储过程。 * @param string $query Prepared query text * @return void */ public function prepare($query) { $this->stored_procedure = true; $this->quote_store = array(); //清除引号 $this->query = preg_replace(self::$QUOTE_MATCH, '$this->sql_quote_replace("1"?"1":'2')', $query); } private function sql_quote_replace($match) { $number = count($this->query_strings); $this->query_strings[] = $match; return "$||$$number"; } |
/** * 返回编译的query,但并不执行它。 * @param mixed $args,... Query Parameters * @return string Compiled Query */ public function compile($params) { if (! $this->stored_procedure) { throw new Exception("存储过程未被初始化!"); } /* 替代参数 */ $params = func_get_args(); // 取得函数参数 $query = preg_replace("/(?query); return $this->add_strings($query); //把字符串放回query中 } /** * 重新插入被prepare()函数移除的字符串。 */ private function add_strings($string) { $numbers = array_keys($this->query_strings); $count = count($numbers); $searches = array(); for($x = 0; $x < $count; $x++) { $searches[$x] = "$||${$numbers[$x]}"; } return str_replace($searches, $this->query_strings, $string); } /** * 每次执行,存储过程中都有一个占位符被替换。 */ protected function compile_callback($params, $index, $type) { --$index; /* 抛出一个异常 */ if (! isset($params[$index])) { throw new Exception("存储过程未收到所需的参数数目!"); } /* 可以在此添加别的类型,如日期和时间。 */ switch ($type) { case 'S': return '"' . $this->db->escape_string($params[$index]) . '"'; break; case 'I': return (int) $params[$index]; break; case 'N': return (float) $params[$index]; default: throw new Exception("存储过程中指定的数据类型 '$type' 无法识别。"); } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者