PHP: 使用 PDO 將 PHP 連接到 MySQL
此文件屬於連接到 MySQL指南的一部分。請在此處查看完整指南:學習如何使用 MySQLi 和 PDO 從 PHP 連接到 MySQL。
👋 歡迎瀏覽 Stackhero 文件!
Stackhero 提供專為快速、可靠部署而設計的 PHP cloud 平台:
- 只需一個簡單的
git push,即可在數秒內部署您的 PHP 應用程式到生產環境。- 可使用您自己的網域名稱,系統會為您自動配置 HTTPS 憑證,無需手動操作。
- 享有自動備份、一鍵更新,以及清晰、可預測的收費模式。Stackhero 會為您處理這些細節,讓您專注於開發程式碼。
- 在專為您的應用程式打造的專屬私有基礎設施上,獲得強大的效能與安全性保障。
讓您的工作流程更順暢,節省寶貴時間。只需幾分鐘,即可開始使用 Stackhero 的 PHP cloud hosting。
PDO 提供了一種靈活的方法來將 PHP 連接到 MySQL。下面的示例說明如何使用 PDO 建立連接。它還解決了如果您的系統缺乏 CA 證書訪問權限可能出現的 SSL 證書問題。
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // 對於生產環境,考慮創建專用的數據庫和用戶
$dsn = "mysql:host=$hostname;dbname=$database";
$options = array(
// 如果您遇到類似 "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1..." 的錯誤,
// 可能是因為 /etc/ssl/certs/ 目錄缺少 CA 證書
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/',
// PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem',
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => true,
);
$pdo = new PDO($dsn, $user, $password, $options);
$stm = $pdo->query('SELECT VERSION()');
$version = $stm->fetch();
echo '您已連接到運行版本 ' . $version[0] . "\n" 的數據庫;
?>
處理錯誤 "SSL operation failed with code 1"
如果您看到類似 Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed 的錯誤,可能是因為您的系統的 /etc/ssl/certs/ 目錄中沒有包含必要的 CA 證書。
如果您可以訪問運行 PHP 代碼的系統,您可以按以下方式安裝證書:
- 在 Ubuntu/Debian 上,運行
sudo apt-get install ca-certificates - 在 Alpine Linux 上,運行
apk add ca-certificates
如果您無法直接訪問系統以安裝這些證書,您可以手動安裝證書:
- 將證書下載到您的電腦:https://letsencrypt.org/certs/isrgrootx1.pem
- 將
isrgrootx1.pem文件添加到您的 PHP 項目文件中。 - 註釋掉
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'行 - 取消註釋
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'行