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

PHP 連接 MySQL、建立資料庫與資料表完整教學

     編輯:PHP 綜合知識

現代 PDO 連接方式

<?php
$dsn = 'mysql:host=localhost;charset=utf8mb4';
$user = 'root';
$pass = 'password';

try {
    $pdo = new PDO($dsn, $user, $pass, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]);
    echo "連接 MySQL 伺服器成功!";
} catch (PDOException $e) {
    die("連接失敗: " . $e->getMessage());
}
?>

建立資料庫

<?php
// 方法 1:PDO exec(無結果集的 SQL)
$pdo->exec("CREATE DATABASE IF NOT EXISTS `webjx` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
echo "資料庫 webjx 建立成功或已存在。";

// 方法 2:指定資料庫連接後建立另一個
$pdo2 = new PDO('mysql:host=localhost;dbname=webjx;charset=utf8mb4', $user, $pass, $options);
$pdo2->exec("CREATE DATABASE IF NOT EXISTS `other_webjx` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
echo "資料庫 other_webjx 建立成功。";
?>

建立資料表

<?php
$pdo = new PDO('mysql:host=localhost;dbname=webjx;charset=utf8mb4', $user, $pass, $options);

$sql = <<exec($sql);
echo "資料表 webjx_table 建立成功。";
?>

完整範例:連接 → 建庫 → 選庫 → 建表

<?php
$host = 'localhost';
$user = 'root';
$pass = 'password';
$charset = 'utf8mb4';
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
];

try {
    // 1. 連接伺服器(未指定資料庫)
    $pdo = new PDO("mysql:host=$host;charset=$charset", $user, $pass, $options);

    // 2. 建立資料庫
    $dbname = 'myapp';
    $pdo->exec("CREATE DATABASE IF NOT EXISTS `$dbname` CHARACTER SET $charset COLLATE ${charset}_unicode_ci");
    echo "資料庫 $dbname 就緒。\n";

    // 3. 切換至該資料庫
    $pdo->exec("USE `$dbname`");

    // 4. 建立資料表
    $tables = [
        'users' => << << $sql) {
        $pdo->exec($sql);
        echo "資料表 $name 建立完成。\n";
    }

    echo "所有初始化完成!";
} catch (PDOException $e) {
    error_log("初始化失敗: " . $e->getMessage());
    die("系統錯誤,請稍後再試。");
}
?>

重要提醒

  • 字符集統一使用 utf8mb4:支援完整 Unicode(含 Emoji),utf8 是舊版別名,僅支援 BMP 平面
  • 儲存引擎指定 InnoDB:支援事務、外鍵、行級鎖定,MyISAM 已不推薦
  • 識別符號使用反引號:\`table\`、\`column\` 避免保留字衝突
  • 錯誤模式設為異常:PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 讓錯誤可被 try-catch 捕捉
  • 關閉模擬預處理:PDO::ATTR_EMULATE_PREPARES => false 使用真正的預處理語句,更安全
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved