首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PDO_MYSQL 預定義常數實戰:連線初始化指令與屬性控制

     編輯:MySQL 資料庫相關知識

核心常數:PDO::MYSQL_ATTR_INIT_COMMAND

連線建立後自動執行指定 SQL,重連時同樣執行。常見用途:設定字元集、時區、SQL 模式。

實戰範例:UTF-8 連線初始化

<?php
$dsn = "mysql:host=localhost;dbname=my_db;charset=utf8mb4";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
];

$pdo = new PDO($dsn, 'user', 'pass', $options);
// 連線成功後已自動執行 SET NAMES ...
?>

其他實用 MYSQL_ATTR 常數

常數用途範例值
PDO::MYSQL_ATTR_COMPRESS啟用壓縮協議true
PDO::MYSQL_ATTR_SSL_CASSL CA 憑證路徑/etc/ssl/ca.pem
PDO::MYSQL_ATTR_SSL_CERTSSL 客戶端憑證/etc/ssl/client-cert.pem
PDO::MYSQL_ATTR_SSL_KEYSSL 私鑰/etc/ssl/client-key.pem
PDO::MYSQL_ATTR_LOCAL_INFILE允許 LOAD DATA LOCALtrue/false
PDO::MYSQL_ATTR_MAX_BUFFER_SIZE緩衝區上限1024*1024
PDO::MYSQL_ATTR_READ_DEFAULT_FILE讀取 my.cnf 選項組/etc/my.cnf
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP選項組名稱client

進階:連線時區統一

$options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8mb4; SET time_zone = '+08:00';";

注意事項

  • charset=utf8mb4 在 DSN 中已設定字元集,INIT_COMMAND 可補充 COLLATE 或時區
  • 重連機制依賴 PDO::ATTR_PERSISTENT 或手動重連邏輯
  • MySQL 8.0+ 預設 caching_sha2_password,PHP 需 7.2+ 且啟用 PDO::MYSQL_ATTR_SSL_CA 等 SSL 選項才能連線
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved