我使用 Virtual Box 安裝 Ubuntu 20.04 版
我使用 apt update && apt install mysql-server 安裝 MySQL
我使用 apt update && apt install apache2 安裝 apache
我使用 apt update && apt install php 安裝 php
我使用 apt update && apt install libapache2-mod-php php-mysql 安裝相關套件
我使用 apt update && apt install phpmyadmin 安裝 phpmyadmin 並用其匯入資料表
但使用 php 的 PDO 語法連接資料庫卻連不上,我是新手,請救救我吧!
//login.php
$host = "localhost"; // Change as necessary
$data = "onlineshop"; // Change as necessary
$user = "root"; // Change as necessary
$pass = "password"; // Change as necessary
$chrs = "utf8mb4";
$attr = "mysql:host=$host;dbname=$data;charset=$chrs";
$opts =
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
require_once "login.php";
try {
$pdo = new PDO ($attr, $user, $pass, $opts);
$query = "SHOW TABLES";
$result = $pdo->query ($query);
} catch (PDOException $e) {
throw new PDOException ($e->getMessage (), (int) $e->getCode ());
}
ANS From ChatGPT
根據你提供的程式碼,我看到了一個可能導致問題的地方:你在 login.php 中又 require_once 了自身,這可能會引起無限迴圈和內存耗盡的情況。你應該確保在 login.php 中不要再次引入自己。
假設你的程式碼存在於兩個不同的檔案中:一個是 login.php(包含了資料庫連接相關的程式碼),另一個是其他檔案(比如 index.php),它使用 login.php 中定義的資料庫連接。以下是你的程式碼的修正版,以確保不再出現無限迴圈:
login.php:
<?php
$host = "localhost"; // Change as necessary
$data = "onlineshop"; // Change as necessary
$user = "root"; // Change as necessary
$pass = "password"; // Change as necessary
$chrs = "utf8mb4";
$attr = "mysql:host=$host;dbname=$data;charset=$chrs";
$opts = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($attr, $user, $pass, $opts);
} catch (PDOException $e) {
throw new PDOException($e->getMessage(), (int) $e->getCode());
}
index.php:
<?php
require_once "login.php";
try {
$query = "SHOW TABLES";
$result = $pdo->query($query);
// ... Handle the query result here
} catch (PDOException $e) {
// ... Handle the exception here
}
請確保以上修正並避免循環引用。如果問題仍然存在,請確認你的伺服器日誌以獲取更多關於500內部伺服器錯誤的資訊。
我剛好在這篇回答 https://ithelp.ithome.com.tw/questions/10213883
因該也是跟你有關的答案。我就不重覆再這邊貼了。你自行去看。