mysql_* 擴展已於 PHP 7.0 移除。本文僅供維護舊專案參考,**新專案請使用 MySQLi 或 PDO**。
mysql_connect()mysql_select_db()mysql_query("SET NAMES utf8")mysql_query()(DDL/DML/DQL/DTL)mysql_fetch_row() / mysql_fetch_assoc() / mysql_fetch_object()mysql_free_result(), mysql_close()<?php
// 1. 連線
$con = mysql_connect("localhost", "root", "toor");
if (!$con) { die("連線失敗"); }
// 2. 選擇資料庫
mysql_select_db("test");
// 3. 設定編碼 & 發送查詢
mysql_query("SET NAMES utf8");
$sql = "SELECT * FROM test1";
$res = mysql_query($sql, $con);
// 4. 處理結果(逐行遍歷)
while ($row = mysql_fetch_row($res)) {
echo "$row[0] --- $row[1] --- $row[2] --- $row[3] --- $row[4]<br/>";
}
// 5. 釋放與關閉
mysql_free_result($res);
mysql_close($con);
?>
| 類別 | 全名 | 典型指令 |
|---|---|---|
| DDL | Data Definition Language | CREATE, ALTER, DROP, TRUNCATE |
| DML | Data Manipulation Language | INSERT, UPDATE, DELETE |
| DQL | Data Query Language | SELECT |
| DTL | Data Transaction Language | COMMIT, ROLLBACK, SAVEPOINT |
<?php
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "toor");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT * FROM test1");
while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
echo implode(" --- ", $row) . "<br/>";
}
// PDO 物件銷毀時自動關閉連線
?>
所有資料庫操作實際上都在**記憶體**中進行(連線緩衝、結果集緩衝)。理解這點有助於處理大量資料時的記憶體管理(如使用 Unbuffered Query、分批抓取)。