PHP Conference Japan 2024

PDO_MYSQL DSN

(PECL PDO_MYSQL >= 0.1.0)

PDO_MYSQL DSN連線到 MySQL 資料庫

說明

PDO_MYSQL 資料來源名稱 (DSN) 由以下元素組成

DSN 前綴

DSN 前綴為 mysql:

host

資料庫伺服器所在的主機名稱。

port

資料庫伺服器正在監聽的連接埠號。

dbname

資料庫的名稱。

unix_socket

MySQL Unix 通訊端(不應與 hostport 一起使用)。

charset

字元集。詳情請參閱字元集概念說明文件。

範例

範例 #1 PDO_MYSQL DSN 範例

以下範例顯示用於連線到 MySQL 資料庫的 PDO_MYSQL DSN

mysql:host=localhost;dbname=testdb
更完整的範例
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

注意事項

注意僅限 Unix 系統:

當主機名稱設定為 "localhost" 時,則會透過網域通訊端連線到伺服器。如果 PDO_MYSQL 是針對 libmysqlclient 編譯的,則通訊端檔案的位置位於 libmysqlclient 編譯的位置。如果 PDO_MYSQL 是針對 mysqlnd 編譯的,則可以透過 pdo_mysql.default_socket 設定來設定預設通訊端。

新增註解

使用者貢獻的註解 3 則註解

codeslinger at compsalot dot com
15 年前
我測試過,發現 "dbname" 欄位是選填的。如果您必須先建立資料庫,這是一件好事。

建立資料庫後,請務必執行 "use dbname;" 指令,否則請使用完整指定的表格參考。
rhian
8 年前
xwisdom 在他的評論中犯了一個錯誤,並弄反了,更正如下

如果您在存取遠端 MYSQL 資料庫時遇到問題,解決方案是確保在 "mysql:" 之後新增一個空格

將這個...
mysql:host=remote;

...改成這個
mysql: host=remote;

請參閱此處的原始解決方案
http://stackoverflow.com/a/25432156
divinity76 at gmail dot com
5 年前
以下是我個人偏好的範例,在我看來,這幾乎總是「正確的」做法
<?php

$db
= new \PDO('mysql:host=localhost;dbname=testdb;charset=utf8mb4', 'username', 'password', array(
\PDO::ATTR_EMULATE_PREPARES => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
));
To Top