<?php
/**
* Created by PhpStorm.
* User: Sudo
* Date: 2017/7/11
* Time: 20:22
*/
//設置編碼格式(防止亂碼)
header("Content-type: text/html; charset=utf-8");
// 1 同壹個類,方法和變量必須加$this->變量/方法,但參數不需要
// 2 變量定義必須加上權限修飾符(封裝)
// 3 常量定義 const 不需要加權限修飾符和$
// 4 類中的構造函數只能有一個
class Tools {
private $link = null;
function __construct(){
$this->connectDB();
}
function connectDB(){
$this ->link = mysqli_connect("localhost","root","root")
or die($this -> link = null);
if(!mysqli_select_db($this->link,"queen")){
$this ->link = null;
}
}
//查詢數據庫
// @param $tableNmae 要求傳string類型的值 表名
// @param $col 默認為* 要求傳array類型的值 列名
// @param $where 默認為"" 要求傳array類型的值 條件
function selectDB($tableName,$col = "*",$where = ""){
//若數據庫連接標識符為空則嘗試繼續連接數據庫
if($this ->link == null){
$this -> connectDB();
//return "error";
}
//根據傳遞的數組元素拼接查詢的字段
$cols = "";
if($col == "*"){
$cols = "*";
}else{
for($i = 0,$ilen = count($col);$i<$ilen;$i++){
//最后一個數組元素不拼接逗號
if($i < $ilen -1){
$cols = $cols.$col[$i].",";
continue;
}
$cols = $cols.$col[$i];
}
}
//根據傳遞的數組元素拼接查詢的條件
$whereTemp == "";
if($where == ""){
$whereTemp == "";
}else{
for($i = 0,$ilen = count($where);$i<$ilen;$i++){
if($i < $ilen -1){
$whereTemp = $whereTemp.$where[$i].",";
continue;
}
$whereTemp = $whereTemp.$where[$i];
}
}
//構建sql語句
$sql = "";
if($whereTemp == ""){
//如果查詢條件為空則不加條件
$sql = "select ".$cols." from ".$tableName;
}else{
//有查詢條件時加上查詢條件
$sql = "select ".$cols." from ".$tableName." where ".$whereTemp;
}
//執行查詢語句返回結果集
$result = mysqli_query($this->link,$sql);
//關閉數據庫
mysqli_close($this->link);
//如果剛才查詢語句執行錯誤則返回error,否則返回查詢的結果
if(mysqli_affected_rows($this->link) < 0){
return "error";
}else{
$arr = array();
//將查詢結果存入數組$row中,再將$row添加到$arr數組中并返回
while($row = mysqli_fetch_row($result)){
array_push($arr, $row);
}
return $arr;
}
}
//插入數據到數據庫表中
//參數一:表名$tableName,字符串
//參數二:字段名$arrCols,數組
//參數三:字段值$arrValues,數組
function insertDB($tableName,$arrCols,$arrValues){
if($this ->link == null){
$this -> connectDB();
}
//根據數組元素拼接要插入的字段名
$tempCols = "(";
for($i = 0,$ilen = count($arrCols);$i<$ilen;$i++){
if($i < $ilen -1){
$tempCols = $tempCols.$arrCols[$i].",";
continue;
}
$tempCols = $tempCols.$arrCols[$i];
}
$tempCols = $tempCols.")";
//根據數組元素拼接要插入的字段值
$tempValues = "(";
for($i = 0,$ilen = count($arrValues);$i<$ilen;$i++){
if($i < $ilen -1){
//如果插入表中的字段值是字符串則直接插入相應字段,否則轉換成字符串再插入,最后一個字段值不拼接逗號
if(is_string($arrValues[$i])){
$tempValues = $tempValues."'".$arrValues[$i]."'".",";
}else{
$tempValues = $tempValues.$arrValues[$i].",";
}
continue;
}
if(is_string($arrValues[$i])){
$tempValues = $tempValues."'".$arrValues[$i]."'";
}else{
$tempValues = $tempValues.$arrValues[$i];
}
}
$tempValues = $tempValues.")";
//構建sql插入語句并執行該語句
$sql = "insert into ".$tableName. $tempCols." values".$tempValues;
mysqli_query($this->link,$sql);
//如果剛才的插入語句影響的紀錄行數大于零,說明插入成功,關閉數據庫并返回true,否則返回false
if(mysqli_affected_rows($this->link) > 0){
mysqli_close($this->link);
return true;
}else{
mysqli_close($this->link);
return false;
}
}
//更新數據庫紀錄
//參數一:表名$tableName,字符串
//參數二:字段名$colrows,數組
//參數三:字段值$values,數組
//參數四:作為更新依據的某一個特定字段名和字段值$where,字符串
function updateDB($tableName,$colrows,$values,$where){
if($this->link == null){
$this ->connectDB();
}
$str = "";
for($i = 0,$ilen = count($colrows);$i<$ilen;$i++){
if($i < $ilen -1){
//根據傳遞的數組元素拼接將要更新的“字段名=‘新值’”,用逗號分隔;
if(is_string($values[$i])){
//如果新的字段值$values[$i]是字符串,則加上單引號,否則不加
$str = $str.$colrows[$i]."="."'".$values[$i]."'".",";
}else{
$str = $str.$colrows[$i]."=".$values[$i].",";
}
}else{
//最后壹個數組元素(即最后一個字段名=‘新值’)結束后不再拼接逗號
if(is_string($values[$i])){
$str = $str.$colrows[$i]."="."'".$values[$i]."'";
}else{
$str = $str.$colrows[$i]."=".$values[$i];
}
}
}
//構建更新紀錄的sql語句,若執行成功并且該更新操作確實影響到數據庫表中紀錄則返回true,否則返回false
$sql = "update ".$tableName." set ".$str." where ".$where;
mysqli_query($this->link,$sql);
if(mysqli_affected_rows($this->link) >= 0){
return true;
}else{
return false;
}
}
//刪除數據庫紀錄
function deleteDB($tableName,$where){
if($this->link == null){
$this ->connectDB();
}
//根據給定字段的鍵值組合刪除表中相關紀錄內容,成功返回true,失敗返回false
$sql = "delete from ".$tableName." where ".$where;
mysqli_query($this->link,$sql);
if(mysqli_affected_rows($this->link) >= 0){
return true;
}else{
return false;
}
}
//封裝一個上傳文件后將對應的服務器臨時副本拷貝到指定目錄的類,文件名為“原始文件名+服務器當前日期時間”格式
function moveFile($name,$username){
move_uploaded_file($_FILES[$name]["tmp_name"], "upload/".$username.$_FILES[$name]["name"].date("Y-m-d-h-i-s"));
}
//獲取客戶端通過Ajax提交Form表單的數據類,返回數組
function getClientData($arr){
$arrTemp = array();
for($i = 0,$ilen = count($arr);$i<$ilen;$i++){
array_push($arrTemp, $_REQUEST[$arr[$i]]);
}
return $arrTemp;
}
}
?>
PHP封裝MySQLi數據庫操作類
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 自編PHP框架之數據庫PDO層封裝和模型類部分方法的編寫 如果你是噴子,問我造輪子花這么多精力有什么用的話,那就走...
- 應用程序配置文件存放數據庫連接字符串的信息 對SQL Server數據庫操作方法的封裝 對SQLite數據庫操作方...
- EasyDB 基于ORMLite封裝的數據庫操作工具類——致力于最簡潔的數據庫操作API 功能點 支持自定義數據庫...
- [引言] 我們在學習Java編程時,連接數據庫技術(JDBC)是一項必備技能,我們經常需要讀取或操作持久性存儲的結...