本文介紹如何在LNMP (Linux, nginx, mysql/MariaDB, php) 環(huán)境中,使用PHP連接MySQL數(shù)據(jù)庫(kù)。我們將分別講解mysqli和pdo兩種擴(kuò)展的用法。
方法一:使用MySQLi擴(kuò)展
- 數(shù)據(jù)庫(kù)及用戶(hù)創(chuàng)建: 首先,在MySQL中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)和一個(gè)用戶(hù),并賦予該用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限。 以下sql語(yǔ)句演示了創(chuàng)建數(shù)據(jù)庫(kù)mydatabase和用戶(hù)myuser的過(guò)程:
CREATE DATABASE mydatabase; CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;
- php腳本編寫(xiě): 接下來(lái),編寫(xiě)PHP腳本連接數(shù)據(jù)庫(kù)。 請(qǐng)?zhí)鎿Q以下代碼中的數(shù)據(jù)庫(kù)配置信息為你的實(shí)際配置:
<?php // 數(shù)據(jù)庫(kù)配置信息 $servername = "localhost"; $username = "myuser"; $password = "mypassword"; $dbname = "mydatabase"; // 創(chuàng)建連接 $conn = new mysqli($servername, $username, $password, $dbname); // 檢查連接 if ($conn->connect_error) { die("連接失敗: " . $conn->connect_error); } echo "連接成功"; // 關(guān)閉連接 $conn->close(); ?>
方法二:使用PDO擴(kuò)展
-
數(shù)據(jù)庫(kù)及用戶(hù)創(chuàng)建: 與方法一相同,先創(chuàng)建數(shù)據(jù)庫(kù)和用戶(hù)并賦予權(quán)限 (參見(jiàn)上面的SQL語(yǔ)句)。
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
-
PHP腳本編寫(xiě): 使用PDO擴(kuò)展連接數(shù)據(jù)庫(kù)的PHP腳本如下,同樣需要將配置信息替換為你的實(shí)際配置:
<?php // 數(shù)據(jù)庫(kù)配置信息 $servername = "localhost"; $username = "myuser"; $password = "mypassword"; $dbname = "mydatabase"; try { // 創(chuàng)建PDO實(shí)例 $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // 設(shè)置PDO錯(cuò)誤模式為異常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "連接成功"; } catch(PDOException $e) { echo "連接失敗: " . $e->getMessage(); } // 關(guān)閉連接 $conn = null; ?>
重要提示:
- 安全性: 切勿將數(shù)據(jù)庫(kù)用戶(hù)名和密碼直接硬編碼在PHP腳本中。 建議使用配置文件或環(huán)境變量來(lái)存儲(chǔ)這些敏感信息,以增強(qiáng)安全性。
- 錯(cuò)誤處理: 生產(chǎn)環(huán)境中,需要更完善的錯(cuò)誤處理機(jī)制,而不僅僅是簡(jiǎn)單的錯(cuò)誤信息輸出。
- 持久連接: 對(duì)于高并發(fā)應(yīng)用,考慮使用持久連接以提升性能,減少連接建立和關(guān)閉的開(kāi)銷(xiāo)。
選擇MySQLi還是PDO取決于你的項(xiàng)目需求和偏好。 兩者都能有效連接MySQL數(shù)據(jù)庫(kù),并提供不同的功能和優(yōu)勢(shì)。 遵循安全性和最佳實(shí)踐,確保你的數(shù)據(jù)庫(kù)連接安全可靠。