我測試過,發現 "dbname" 欄位是選填的。如果您必須先建立資料庫,這是一件好事。
建立資料庫後,請務必執行 "use dbname;" 指令,否則請使用完整指定的表格參考。
(PECL PDO_MYSQL >= 0.1.0)
PDO_MYSQL DSN — 連線到 MySQL 資料庫
PDO_MYSQL 資料來源名稱 (DSN) 由以下元素組成
DSN 前綴為 mysql:
。
host
資料庫伺服器所在的主機名稱。
port
資料庫伺服器正在監聽的連接埠號。
dbname
資料庫的名稱。
unix_socket
MySQL Unix 通訊端(不應與 host
或 port
一起使用)。
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 設定來設定預設通訊端。
我測試過,發現 "dbname" 欄位是選填的。如果您必須先建立資料庫,這是一件好事。
建立資料庫後,請務必執行 "use dbname;" 指令,否則請使用完整指定的表格參考。
xwisdom 在他的評論中犯了一個錯誤,並弄反了,更正如下
如果您在存取遠端 MYSQL 資料庫時遇到問題,解決方案是確保在 "mysql:" 之後新增一個空格
將這個...
mysql:host=remote;
...改成這個
mysql: host=remote;
請參閱此處的原始解決方案
http://stackoverflow.com/a/25432156
以下是我個人偏好的範例,在我看來,這幾乎總是「正確的」做法
<?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
));