首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

PHP 操作 MySQL 核心 API 速查:連線、查詢、新增、修改、刪除、關閉完整範例

     編輯:MySQL 綜合教學

前言

雖然官方建議使用 PDO/MySQLi,但舊專案仍大量使用 mysql_* 函數(PHP 7.0 已移除)。本文提供一份精簡、可直接複製執行的參考範例,並標註現代替代寫法。

經典 mysql_* 完整流程(僅供維護舊代碼參考)

<?php
// 1. 連線
$conn = mysql_connect('localhost', 'root', '123456');
if (!$conn) die('連線失敗: ' . mysql_error());

// 2. 選擇資料庫
mysql_select_db('products', $conn);

// 3. 設定字符集(防亂碼)
mysql_query('SET NAMES utf8', $conn);

// --- 查詢 ---
$sql = 'SELECT * FROM `category`';
$res = mysql_query($sql, $conn);
while ($row = mysql_fetch_assoc($res)) {
    echo $row['id'] . ' - ' . $row['name'] . '<br>';
}
mysql_free_result($res);

// --- 新增 ---
$name = mysql_real_escape_string('測試分類', $conn);
$sql = "INSERT INTO `category` (`name`) VALUES ('$name')";
mysql_query($sql, $conn);
if (mysql_affected_rows($conn)) {
    echo '新增成功,ID: ' . mysql_insert_id($conn);
} else {
    echo '新增失敗: ' . mysql_error($conn);
}

// --- 修改 ---
$id = 1;
$newName = mysql_real_escape_string('更新名稱', $conn);
$sql = "UPDATE `category` SET `name`='$newName' WHERE `id`=$id";
mysql_query($sql, $conn);
if (mysql_affected_rows($conn)) echo '修改成功';

// --- 刪除 ---
$sql = "DELETE FROM `category` WHERE `id`=$id";
mysql_query($sql, $conn);
if (mysql_affected_rows($conn)) echo '刪除成功';

// 5. 關閉連線
mysql_close($conn);
?>

現代最佳實踐:PDO(推薦)

<?php
$dsn = 'mysql:host=localhost;dbname=products;charset=utf8mb4';
$opt = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new PDO($dsn, 'root', '123456', $opt);

// 查詢
$stmt = $pdo->query('SELECT * FROM `category`');
foreach ($stmt as $row) { echo $row['id'] . ' - ' . $row['name'] . '<br>'; }

// 新增(預處理)
$stmt = $pdo->prepare('INSERT INTO `category` (`name`) VALUES (?)');
$stmt->execute(['測試分類']);
echo '新增 ID: ' . $pdo->lastInsertId();

// 修改
$stmt = $pdo->prepare('UPDATE `category` SET `name`=? WHERE `id`=?');
$stmt->execute(['更新名稱', 1]);

// 刪除
$stmt = $pdo->prepare('DELETE FROM `category` WHERE `id`=?');
$stmt->execute([1]);
?>

MySQLi 物件風格(次佳選)

$mysqli = new mysqli('localhost', 'root', '123456', 'products');
$mysqli->set_charset('utf8mb4');

$stmt = $mysqli->prepare('SELECT * FROM `category`');
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) { /* ... */ }

$stmt = $mysqli->prepare('INSERT INTO `category` (`name`) VALUES (?)');
$stmt->bind_param('s', $name);
$name = '測試';
$stmt->execute();
echo 'ID: ' . $mysqli->insert_id;

關鍵差異速查表

特性mysql_*MySQLiPDO
PHP 7+ 支援❌ 移除✅✅
預處理❌✅✅
多資料庫驅動❌❌✅
物件導向❌✅✅
命名參數綁定❌❌✅

結論:新專案請直接使用 PDO;維護舊專案時,儘快規劃遷移至 PDO/MySQLi。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved