首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Mac 環境 PHP 連接 MySQL 完整指南:MAMP、Homebrew 與實戰操作

     編輯:PHP 相關知識

本地開發環境搭建

方案一:MAMP Pro(圖形化、全功能)

  • 安裝後網站根目錄:/Applications/MAMP/htdocs
  • 訪問地址:https://localhost:8888
  • 內建 Apache/Nginx、MySQL、PHP 多版本切換、虛擬主機管理

MAMP Pro 介面

方案二:Homebrew + 原生 PHP(輕量、開發者首選)

# 安裝 PHP(指定版本)
brew tap shivammathur/php
brew install shivammathur/php/php@8.2

# 或安裝舊版(如 5.6/7.4)
brew install php@7.4

# 連結到 PATH
brew link --force --overwrite php@8.2

# 驗證
php -v
which php  # /usr/local/bin/php 或 /opt/homebrew/bin/php (M1/M2)

資料庫管理工具推薦

  • Sequel Ace (免費、現代化、Mac 原生)
  • TablePlus (跨平台、付費但體驗佳)
  • DBeaver (免費開源、功能強大、Java 基礎稍重)
  • MySQL Workbench (官方、功能全但介面傳統)

資料庫工具

PHP 連接 MySQL 核心流程


1. 瀏覽器發送 HTTP 請求
2. Web Server (Nginx/Apache) 接收 .php 請求,轉交 PHP-FPM
3. PHP 引擎解析腳本,遇到資料庫操作
4. PHP 建立 MySQL 連線 (mysqli/PDO),發送 SQL
5. MySQL 執行查詢,返回結果集
6. PHP 格式化結果 (JSON/HTML/陣列)
7. Web Server 回傳響應給瀏覽器

MySQL 常用資料類型速查

分類類型說明
整數TINYINT-128~127 / 0~255
SMALLINT-32768~32767
INT標準整數
BIGINT大整數
浮點/定點FLOAT單精度
DOUBLE雙精度
DECIMAL(M,D)精確定點數 (金額必用)
字串CHAR(n)固定長度
VARCHAR(n)可變長度
日期時間DATETIME日期+時間 (1000-9999)
TIMESTAMP時間戳 (1970-2038)
DATE僅日期
大文本TINYTEXT255 字元
TEXT65KB
LONGTEXT4GB

MySQL 基礎操作指令

-- 顯示資料庫
SHOW DATABASES;

-- 選擇資料庫
USE mydb;

-- 查看當前資料庫
SELECT DATABASE();

-- 顯示資料表
SHOW TABLES;

-- 查看表結構
DESC users;
-- 或
SHOW COLUMNS FROM users;

-- 設定編碼
SET NAMES utf8mb4;

-- 建立資料庫
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 建立資料表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    sex CHAR(1) DEFAULT 'M',
    birth DATETIME,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入資料
INSERT INTO users (username, email, sex, birth) VALUES ('jack', 'jack@example.com', 'M', NOW());

-- 查詢
SELECT * FROM users;
SELECT id, username FROM users WHERE sex = 'F' ORDER BY created_at DESC LIMIT 10;

-- 更新
UPDATE users SET email = 'new@example.com' WHERE id = 1;

-- 刪除
DELETE FROM users WHERE id = 2;

PHP 連接 MySQL:PDO 最佳實踐 (推薦)

<?php
// 配置常數
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'mydb');
define('DB_USER', 'root');
define('DB_PASS', 'password');
define('DB_CHARSET', 'utf8mb4');

// DSN
$dsn = "mysql:host={DB_HOST};dbname={DB_NAME};charset={DB_CHARSET}";

try {
    // 建立連線
    $pdo = new PDO($dsn, DB_USER, DB_PASS, [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false, // 使用真實預處理
    ]);

    echo "連線成功\n";

    // 查詢
    $stmt = $pdo->query("SELECT * FROM users");
    $users = $stmt->fetchAll();
    print_r($users);

    // 預處理插入 (防 SQL 注入)
    $stmt = $pdo->prepare("INSERT INTO users (username, email, sex, birth) VALUES (?, ?, ?, ?)");
    $stmt->execute(['mary', 'mary@example.com', 'F', '1990-05-20']);
    echo "新增 ID: " . $pdo->lastInsertId();

    // 事務
    $pdo->beginTransaction();
    try {
        $pdo->exec("UPDATE users SET email='a@b.c' WHERE id=1");
        $pdo->exec("UPDATE users SET email='d@e.f' WHERE id=2");
        $pdo->commit();
    } catch (Exception $e) {
        $pdo->rollBack();
        throw $e;
    }

} catch (PDOException $e) {
    die("連線失敗: " . $e->getMessage());
}

// 指令碼結束自動關閉連線,或手動:$pdo = null;

舊式 mysql_* 函數已棄用/移除

PHP 7.0 起完全移除 mysql_connect、mysql_query 等函數。**請勿在新專案使用**。務必改用 PDO 或 mysqli (物件導向風格)。

常用 PDO 方法速查

方法說明
query()執行 SELECT,返回 PDOStatement
exec()執行 INSERT/UPDATE/DELETE,返回影響行數
prepare()預處理語句,防注入
fetch()取得單行
fetchAll()取得所有行
fetchColumn()取得單一欄位值
lastInsertId()取得最後插入自增 ID
beginTransaction()/commit()/rollBack()事務控制
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved