首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP MySQL 連線類 (OOP 版):支援永久連線、多資料庫、錯誤代碼、INSERT_ID、AFFECTED_ROWS

     編輯:MySQL 資料庫相關知識

類別完整程式碼 (PHP 4/5 相容)

class DB_MySQL {
  var $dbServer, $dbDatabase, $dbbase, $dbUser, $dbPwd;
  var $dbLink, $query_id, $num_rows, $insert_id, $affected_rows;

  function connect($dbbase="") {
    global $usepconnect;
    $this->dbLink = $usepconnect ? 
      @mysql_pconnect($this->dbServer,$this->dbUser,$this->dbPwd) :
      @mysql_connect($this->dbServer,$this->dbUser,$this->dbPwd);
    if(!$this->dbLink) die("Connect failed");
    if($dbbase) $this->dbDatabase = $dbbase;
    if($this->dbDatabase) mysql_select_db($this->dbDatabase, $this->dbLink);
  }

  function query($sql, $dbbase="") {
    if($dbbase && $dbbase!=$this->dbDatabase) mysql_select_db($dbbase, $this->dbLink);
    $this->query_id = mysql_query($sql, $this->dbLink);
    $this->num_rows = mysql_num_rows($this->query_id);
    $this->insert_id = mysql_insert_id($this->dbLink);
    $this->affected_rows = mysql_affected_rows($this->dbLink);
    return $this->query_id;
  }

  function query_first($sql, $dbbase="") {
    $this->query($sql, $dbbase);
    return mysql_fetch_assoc($this->query_id);
  }

  function fetch_array($sql, $dbbase="") {
    $this->query($sql, $dbbase);
    $rows = array();
    while($row = mysql_fetch_assoc($this->query_id)) $rows[] = $row;
    return $rows;
  }

  function count_records($table, $index, $where="", $dbbase="") {
    if($dbbase) mysql_select_db($dbbase, $this->dbLink);
    $sql = "SELECT COUNT($index) AS num FROM $table $where";
    $this->query($sql);
    $row = mysql_fetch_assoc($this->query_id);
    return $row['num'];
  }
}

使用方式

require("./MySQL.class.php");
$DB = new DB_MySQL;
$DB->dbServer = "localhost";
$DB->dbUser = "root";
$DB->dbPwd = "";
$DB->dbDatabase = "mydb";
$DB->connect();

$user = $DB->query_first("SELECT * FROM users WHERE id=1");
$list = $DB->fetch_array("SELECT * FROM articles WHERE cat_id=5");
$DB->query("INSERT INTO logs(msg) VALUES('test')");
echo "New ID: ".$DB->insert_id;
echo "Affected: ".$DB->affected_rows;
$total = $DB->count_records("users", "id", "WHERE active=1");

關鍵屬性說明

屬性含義
insert_id最後一次 INSERT 的 AUTO_INCREMENT 值
affected_rows最後 INSERT/UPDATE/DELETE 影響列數 (DELETE 無 WHERE 回傳 0)
num_rows最後 SELECT 回傳列數

遷移提醒

mysql_* 函數已在 PHP 7 移除,新專案請直接使用 PDO 或 mysqli;舊專案可建立相容 Wrapper 逐步替換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved