本文实例讲述了php封装的数据库函数与用法。分享给大家供大家参考,具体如下:
从Thinkphp里面抽离出来的数据库模块,感觉挺好用
common.php:
<"config.php")) { C(include 'config.php'); } if (!function_exists("__autoload")) { function __autoload($class_name) { require_once('classes/' . $class_name . '.class.php'); } } /** * 数据库操作函数 * @return \mysqli */ function M() { $db = new Model(); if (mysqli_connect_errno()) throw_exception(mysqli_connect_error()); return $db; } // 获取配置值 function C($name = null, $value = null) { //静态全局变量,后面的使用取值都是在 $)config数组取 static $_config = array(); // 无参数时获取所有 if (empty($name)) return $_config; // 优先执行设置获取或赋值 if (is_string($name)) { if (!strpos($name, '.')) { $name = strtolower($name); if (is_null($value)) return isset($_config[$name]) "", $status) { $ret = array(); $ret["data"] = $data; $ret["message"] = $message; $ret["status"] = $status; echo json_encode($ret); die(); } //调试数组 function _dump($var) { if (C("debug")) dump($var); } // 浏览器友好的变量输出 function dump($var, $echo = true, $label = null, $strict = true) { $label = ($label === null) "/\]\=\>\n(\s+)/m", '] => ', $output); $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>'; } } if ($echo) { echo($output); return null; } else return $output; } /** * 调试输出 * @param type $msg */ function _debug($msg) { if (C("debug")) echo "$msg<br />"; } function _log($filename, $msg) { $time = date("Y-m-d H:i:s"); $msg = "[$time]\n$msg\r\n"; if (C("log")) { $fd = fopen($filename, "a+"); fwrite($fd, $msg); fclose($fd); } } /** * 日志记录 * @param type $str */ function L($msg) { $time = date("Y-m-d H:i:s"); $clientIP = $_SERVER['REMOTE_ADDR']; $msg = "[$time $clientIP] $msg\r\n"; $log_file = C("LOGFILE"); _log($log_file, $msg); } "htmlcode"><"htmlcode"><"select id from user limit 1") */ public function getField($sql) { $resultSet = $this->select($sql); if (!empty($resultSet)) { return reset($resultSet[0]); } } /** * 执行查询 返回数据集 */ public function query($str) { $this->initConnect(); if (!$this->db) { if (C("debug")) echo "connect to database error"; return false; } $this->queryStr = $str; //释放前次的查询结果 if ($this->queryID) $this->free(); $this->queryID = $this->db->query($str); // 对存储过程改进 if ($this->db->more_results()) { while (($res = $this->db->next_result()) != NULL) { $res->free_result(); } } //$this->debug(); if (false === $this->queryID) { echo $this->error(); return false; } else { $this->numRows = $this->queryID->num_rows; $this->numCols = $this->queryID->field_count; return $this->getAll(); } } /** * 执行语句 , 例如插入,更新操作 * @access public * @param string $str sql指令 * @return integer */ public function execute($str) { $this->initConnect(); if (!$this->db) return false; $this->queryStr = $str; //释放前次的查询结果 if ($this->queryID) $this->free(); $result = $this->db->query($str); if (false === $result) { $this->error(); return false; } else { $this->numRows = $this->db->affected_rows; $this->lastInsID = $this->db->insert_id; return $this->numRows; } } /** * 获得所有的查询数据 * @access private * @param string $sql sql语句 * @return array */ private function getAll() { //返回数据集 $result = array(); if ($this->numRows > 0) { //返回数据集 for ($i = 0; $i < $this->numRows; $i++) { $result[$i] = $this->queryID->fetch_assoc(); } $this->queryID->data_seek(0); } return $result; } /** * 返回最后插入的ID */ public function getLastInsID() { return $this->db->insert_id; } // 返回最后执行的sql语句 public function _sql() { return $this->queryStr; } /** * 数据库错误信息 */ public function error() { $this->error = $this->db->errno . ':' . $this->db->error; if ('' != $this->queryStr) { $this->error .= "\n [ SQL语句 ] : " . $this->queryStr; } //trace($this->error, '', 'ERR'); return $this->error; } /** * 释放查询结果 */ public function free() { $this->queryID->free_result(); $this->queryID = null; } /** * 关闭数据库 */ public function close() { if ($this->db) { $this->db->close(); } $this->db = null; } /** * 析构方法 */ public function __destruct() { if ($this->queryID) { $this->free(); } // 关闭连接 $this->close(); } }例子:
#include "common.php" function test(){ $model = M(); $sql = "select * from test"; $list = $model->query($sql); _dump($list); }更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
风云阁资源网 Design By www.bgabc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
风云阁资源网 Design By www.bgabc.com
暂无评论...
更新日志
2024年11月15日
2024年11月15日
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]