php封装的数据库函数与用法示例【参考thinkPHP】
发布时间:2020-12-14 14:06:24 所属栏目:大数据 来源:网络整理
导读:本篇章节讲解php封装的数据库函数与用法。供大家参考研究具体如下: 从Thinkphp里面抽离出来的数据库模块,感觉挺好用 common.php: ' . $label . htmlspecialchars($output,ENT_QUOTES) . ' '; } else { $output = $label . print_r($var,true);
本篇章节讲解php封装的数据库函数与用法。分享给大家供大家参考,具体如下: 从Thinkphp里面抽离出来的数据库模块,感觉挺好用 common.php: ' . $label . htmlspecialchars($output,ENT_QUOTES) . '';
} else {
$output = $label . print_r($var,true);
}
} else {
ob_start();
var_dump($var);
$output = ob_get_clean();
if (!extension_loaded('xdebug')) {
$output = preg_replace("/]=>n(s+)/m",'] => ',$output);
$output = '
' . $label . htmlspecialchars($output,ENT_QUOTES) . ''; } } if ($echo) { echo($output); return null; } else return $output; } /** * 调试输出 * @param type $msg */ function _debug($msg) { if (C("debug")) echo "$msg "; } function _log($filename,$msg) { $time = date("Y-m-d H:i:s"); $msg = "[$time]n$msgrn"; 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] $msgrn"; $log_file = C("LOGFILE"); _log($log_file,$msg); } ?> config.php: 'mysql','DB_HOST' => '127.0.0.1','DB_NAME' => 'DB','DB_USER' => 'USER','DB_PWD' => 'PWD','DB_PORT' => '3306',);
return $db;
?>
数据库模型类Model.class.php,放到classes/目录下: db = $this->connect();
}
/**
* 连接数据库方法
*/
public function connect($config = '',$linkNum = 0) {
if (!isset($this->linkID[$linkNum])) {
if (empty($config))
$config = array(
'username' => C('DB_USER'),'password' => C('DB_PWD'),'hostname' => C('DB_HOST'),'hostport' => C('DB_PORT'),'database' => C('DB_NAME')
);
$this->linkID[$linkNum] = new mysqli($config['hostname'],$config['username'],$config['password'],$config['database'],$config['hostport'] ? intval($config['hostport']) : 3306);
if (mysqli_connect_errno())
throw_exception(mysqli_connect_error());
$this->connected = true;
}
return $this->linkID[$linkNum];
}
/**
* 初始化数据库连接
*/
protected function initConnect() {
if (!$this->connected) {
$this->db = $this->connect();
}
}
/**
* 获得所有的查询数据
* @access private
* @param string $sql sql语句
* @return array
*/
public function select($sql) {
$this->initConnect();
if (!$this->db)
return false;
$query = $this->db->query($sql);
$list = array();
if (!$query)
return $list;
while ($rows = $query->fetch_assoc()) {
$list[] = $rows;
}
return $list;
}
/**
* 只查询一条数据
*/
public function find($sql) {
$resultSet = $this->select($sql);
if (false === $resultSet) {
return false;
}
if (empty($resultSet)) {// 查询结果为空
return null;
}
$data = $resultSet[0];
return $data;
}
/**
* 获取一条记录的某个字段值,sql 由自己组织
* 例子: $model->getField("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();
}
}
例子: query($sql);
_dump($list);
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》 希望本文所述对大家PHP程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |