数据库操作类
php代码
<?php /* * 数据库操作类 * */ class Mysql { private $server = ""; private $user = ""; private $password = ""; private $database = ""; private $linkMode = 1; private $link_id = 0; private $query_id = 0; private $query_times = 0; private $result = array (); private $fetchMode = MYSQL_ASSOC; private $err_no = 0; private $err_msg; private $character; //====================================== // 函数: mysql() // 功能: 构造函数 // 参数: 参数类的变量定义 // 说明: 构造函数将自动连接数据库 // 如果想手动连接去掉自动连接函数 //====================================== public function __construct($server, $user, $password, $database, $character = "UTF8", $linkMode = 0) { if (empty ( $server ) || empty ( $user ) || empty ( $database )) $this->halt ( "提交的数据库信息不完整!请检查服务器地址,用户和数据库是否正确有效" ); $this->server = $server; $this->user = $user; $this->password = $password; $this->database = $database; $this->linkMode = $linkMode; $this->character = $character; $this->connect (); } //====================================== // 函数: connect($server,$user,$password,$database) // 功能: 连接数据库 // 参数: $server 主机名, $user 用户名 // 参数: $password 密码, $database 数据库名称 // 返回: 0:失败 // 说明: 默认使用类中变量的初始值 //====================================== public function connect($server = "", $user = "", $password = "", $database = "") { $server = $server ? $server : $this->server; $user = $user ? $user : $this->user; $password = $password ? $password : $this->password; $database = $database ? $database : $this->database; $this->link_id = $this->linkMode ? mysql_pconnect ( $server, $user, $password, $database ) : mysql_connect ( $server, $user, $password, $database ); if (! $this->link_id) { $this->halt ( "数据库连接失败!请检查各项参数!" ); return 0; } if (! mysql_select_db ( $database, $this->link_id )) { $this->halt ( "无法选择数据库" ); return 0; } if ($this->character != "GBK" && $this->character != "UTF8") { $this->halt ( "输入的编码模式不正确!" ); return 0; } $this->query ( 'SET NAMES ' . $this->character ); return $this->link_id; } //====================================== // 函数: query($sql) // 功能: 数据查询 // 参数: $sql 要查询的SQL语句 // 返回: 0:失败 //====================================== public function query($sql) { $this->query_times ++; $this->query_id = mysql_query ( $sql, $this->link_id ); if (! $this->query_id) { $this->halt ( "<font color=red>" . $sql . "</font> 语句执行不成功!" ); return 0; } return $this->query_id; } //====================================== // 函数: setFetchMode($mode) // 功能: 设置取得记录的模式 // 参数: $mode 模式 MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH // 返回: 0:失败 //====================================== public function setFetchMode($mode) { if ($mode == MYSQL_ASSOC || $mode == MYSQL_NUM || $mode == MYSQL_BOTH) { $this->fetchMode = $mode; return 1; } else { $this->halt ( "错误的模式." ); return 0; } } //====================================== // 函数: fetchRow() // 功能: 从记录集中取出一条记录 // 返回: 0: 出错 record: 一条记录 //====================================== public function fetchRow() { $this->record = mysql_fetch_array ( $this->query_id, $this->fetchMode ); return $this->record; } //====================================== // 函数: fetchAll() // 功能: 从记录集中取出所有记录 // 返回: 记录集数组 //====================================== public function fetchAll() { $arr [] = array (); while ( $this->record = mysql_fetch_array ( $this->query_id, $this->fetchMode ) ) $arr [] = $this->record; mysql_free_result ( $this->query_id ); return $arr; } //====================================== // 函数: getValue() // 功能: 返回记录中指定字段的数据 // 参数: $field 字段名或字段索引 // 返回: 指定字段的值 //====================================== public function getValue($filed) { return $this->record [$filed]; } //====================================== // 函数: getquery_id() // 功能: 返回查询号 //====================================== public function getquery_id() { return $this->query_id; } //====================================== // 函数: affectedRows() // 功能: 返回影响的记录数 //====================================== public function affectedRows() { return mysql_affected_rows ( $this->link_id ); } //====================================== // 函数: recordCount() // 功能: 返回查询记录的总数 // 参数: 无 // 返回: 记录总数 //====================================== public function recordCount() { return mysql_num_rows ( $this->query_id ); } //====================================== // 函数: getquery_times() // 功能: 返回查询的次数 // 参数: 无 // 返回: 查询的次数 //====================================== public function getquery_times() { return $this->query_times; } //====================================== // 函数: getVersion() // 功能: 返回mysql的版本 // 参数: 无 //====================================== public function getVersion() { $this->query ( "select version() as ver" ); $this->fetchRow (); return $this->getValue ( "ver" ); } //====================================== // 函数: getDBSize($database, $tblPrefix=null) // 功能: 返回数据库占用空间大小 // 参数: $database 数据库名 // 参数: $tblPrefix 表的前缀,可选 //====================================== public function getDBSize($database, $tblPrefix = null) { $sql = "SHOW TABLE STATUS FROM " . $database; if ($tblPrefix != null) { $sql .= " LIKE '$tblPrefix%'"; } $this->query ( $sql ); $size = 0; while ( $this->fetchRow () ) $size += $this->getValue ( "Data_length" ) + $this->getValue ( "Index_length" ); return $size; } //====================================== // 函数: halt($err_msg) // 功能: 处理所有出错信息 // 参数: $err_msg 自定义的出错信息 //===================================== public function halt($err_msg = "") { if ($err_msg == "") { $this->errno = mysql_errno (); $this->error = mysql_error (); echo "<b>mysql error:<b><br>"; echo $this->errno . ":" . $this->error . "<br>"; exit (); } else { echo "<b>mysql error:<b><br>"; echo $err_msg . "<br>"; exit (); } } //====================================== // 函数: insertID() // 功能: 返回最后一次插入的自增ID // 参数: 无 //====================================== public function insertID() { return mysql_insert_id (); } //====================================== //函数:close() //功能:关闭非永久的数据库连接 //参数:无 //====================================== public function close() { $link_id = $link_id ? $link_id : $this->link_id; mysql_close ( $link_id ); } //====================================== // 函数: sqlSelect() // 功能: 返回组合的select查询值 // 参数: $tbname 查询的表名 // 参数: $where 条件 // 参数: $fields 字段值 // 参数: $orderby 按某字段排序 // 参数: $sort 正序ASC,倒序DESC,$orderby 不为空是有效 // 参数: $limit 取得记录的条数,0,8 // 返回: 查询语句 //====================================== function sqlSelect($tbname, $where = "", $limit = 0, $fields = "*", $orderby = "", $sort = "DESC") { $sql = "SELECT " . $fields . " FROM " . $tbname . ($where ? " WHERE " . $where : "") . ($orderby ? " ORDER BY " . $orderby . " " . $sort : "") . ($limit ? " limit " . $limit : ""); return $sql; } //====================================== // 函数: sqlInsert() // 功能: Insert插入数据函数 // 参数: $taname 要插入数据的表名 // 参数: $row 要插入的内容 (数组) // 返回: 记录总数 // 返回: 插入语句 //====================================== function sqlInsert($tbname, $row) { foreach ( $row as $key => $value ) { $sqlfield .= $key . ","; $sqlvalue .= "'" . $value . "',"; } return "INSERT INTO " . $tbname . "(" . substr ( $sqlfield, 0, - 1 ) . ") VALUES (" . substr ( $sqlvalue, 0, - 1 ) . ")"; } //====================================== // 函数: sqlUpdate() // 功能: Update更新数据的函数 // 参数: $taname 要插入数据的表名 // 参数: $row 要插入的内容 (数组) // 参数: $where 要插入的内容 的条件 // 返回: Update语句 //====================================== function sqlUpdate($tbname, $row, $where) { foreach ( $row as $key => $value ) { $sqlud .= $key . "= '" . $value . "',"; } return "UPDATE " . $tbname . " SET " . substr ( $sqlud, 0, - 1 ) . " WHERE " . $where; } //====================================== // 函数: sqlDelete() // 功能: 删除指定条件的行 // 参数: $taname 要插入数据的表名 // 参数: $where 要插入的内容 的条件 // 返回: DELETE语句 //====================================== function sqlDelete($tbname, $where) { if (! $where) { $this->halt ( "删除函数没有指定条件!" ); return 0; } return "DELETE FROM " . $tbname . " WHERE " . $where; } //====================================== //函数:checkSql SQL语句的过滤 //功能:过滤一些特殊语法 //参数:$db_string 查询的SQL语句 //参数:$querytype 查询的类型 //====================================== function checkSql($db_string, $querytype = 'select') { $clean = ''; $old_pos = 0; $pos = - 1; //如果是普通查询语句,直接过滤一些特殊语法 if ($querytype == 'select') { $notallow1 = "[^0-9a-z@\._-]{1,}(union|sleep|benchmark|load_file|outfile)[^0-9a-z@\.-]{1,}"; //$notallow2 = "--|/\*"; if (eregi ( $notallow1, $db_string )) { exit ( "<font size='5' color='red'>Safe Alert: Request Error step 1 !</font>" ); } } //完整的SQL检查 while ( true ) { $pos = strpos ( $db_string, '\'', $pos + 1 ); if ($pos === false) { break; } $clean .= substr ( $db_string, $old_pos, $pos - $old_pos ); while ( true ) { $pos1 = strpos ( $db_string, '\'', $pos + 1 ); $pos2 = strpos ( $db_string, '\\', $pos + 1 ); if ($pos1 === false) { break; } elseif ($pos2 == false || $pos2 > $pos1) { $pos = $pos1; break; } $pos = $pos2 + 1; } $clean .= '$s$'; $old_pos = $pos + 1; } $clean .= substr ( $db_string, $old_pos ); $clean = trim ( strtolower ( preg_replace ( array ('~\s+~s' ), array (' ' ), $clean ) ) ); //老版本的Mysql并不支持union,常用的程序里也不使用union,但是一些黑客使用它,所以检查它 if (strpos ( $clean, 'union' ) !== false && preg_match ( '~(^|[^a-z])union($|[^[a-z])~s', $clean ) != 0) { $fail = true; } //发布版本的程序可能比较少包括--,#这样的注释,但是黑客经常使用它们 elseif (strpos ( $clean, '/*' ) > 2 || strpos ( $clean, '--' ) !== false || strpos ( $clean, '#' ) !== false) { $fail = true; } //这些函数不会被使用,但是黑客会用它来操作文件,down掉数据库 elseif (strpos ( $clean, 'sleep' ) !== false && preg_match ( '~(^|[^a-z])sleep($|[^[a-z])~s', $clean ) != 0) { $fail = true; } elseif (strpos ( $clean, 'benchmark' ) !== false && preg_match ( '~(^|[^a-z])benchmark($|[^[a-z])~s', $clean ) != 0) { $fail = true; } elseif (strpos ( $clean, 'load_file' ) !== false && preg_match ( '~(^|[^a-z])load_file($|[^[a-z])~s', $clean ) != 0) { $fail = true; } elseif (strpos ( $clean, 'into outfile' ) !== false && preg_match ( '~(^|[^a-z])into\s+outfile($|[^[a-z])~s', $clean ) != 0) { $fail = true; } //老版本的MYSQL不支持子查询,我们的程序里可能也用得少,但是黑客可以使用它来查询数据库敏感信息 elseif (preg_match ( '~\([^)]*?select~s', $clean ) != 0) { $fail = true; } if (! empty ( $fail )) { exit ( "<font size='5' color='red'>Safe Alert: Request Error step 2!</font>" ); } else { return $db_string; } } //====================================== //函数:析构函数 //功能:释放类,关闭非永久的数据库连接 //参数:无 //====================================== public function __destruct() { $this->close (); } } ?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。
