類別完整程式碼 (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 逐步替換。