萬事起頭難,網路上大量專業的資料不知從何學起,我甚至還有看到更方便連接資料庫的方式,先寫好一套類別(class),然後在生成(new)出該類別的物件(Object)出來,就能快速連接資料庫,除此之外,還有人直接用 PHP 微框架就能快速連接資料庫取得資料,但是若沒試過最原始的抓資料方式就直接跳級,恐怕是有些本末倒置,因此此篇文章就要用最原始的函數來抓 MySQL 資料庫中資料表的資料。
開始前,PHP 環境與 MySQL 伺服器一定要準備好,然後記得先建立好資料庫,稍後範例都會提供 SQL 碼與 PHP 程式可供參考與使用,都是完全免費可以自由運用唷!😉
▲ 本文首圖,左上為資料表內容,右下是網頁內容,已經抓出資料表內的資料了!
首先我們先建立一個叫做「php」的資料庫,並建立「condb」資料表,塞入這樣的資料(粗體為欄位名稱):
id | text |
1 | 「這是位於資料庫的文字訊息」 |
2 | 「這是位於資料庫的文字訊息(複製,2)」 |
SQL 碼如下,可以直接匯入資料庫中:
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE `condb` (
`id` int(11) NOT NULL,
`text` text COLLATE utf8mb4_unicode_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `condb` (`id`, `text`) VALUES
(1, '「這是位於資料庫的文字訊息」'),
(2, '「這是位於資料庫的文字訊息(複製,2)」');
ALTER TABLE `condb`
ADD PRIMARY KEY (`id`);
ALTER TABLE `condb`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
接著就要寫「conDB.php」來抓資料(讀取資料)啦!這邊丟上有註解的 PHP 完整程式碼:
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP 連接資料庫並取得資料</title>
</head>
<body>
<?php
// 定義資料庫資訊
$DB_NAME = "php"; // 資料庫名稱
$DB_USER = "root"; // 資料庫管理帳號
$DB_PASS = "mysql"; // 資料庫管理密碼
$DB_HOST = "localhost"; // 資料庫位址
// 連接 MySQL 資料庫伺服器
$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS);
if (empty($con)) {
print mysqli_error($con);
die("資料庫連接失敗!");
exit;
}
// 選取資料庫
if (!mysqli_select_db($con, $DB_NAME)) {
die("選取資料庫失敗!");
} else {
echo "連接 " . $DB_NAME . " 資料庫成功!<br>";
}
// 設定連線編碼
mysqli_query($con, "SET NAMES 'UTF-8'");
// 取得資料
$sql = "SELECT * FROM condb";
$result = mysqli_query($con, $sql);
// 獲得資料筆數
if ($result) {
$num = mysqli_num_rows($result);
echo "condb 資料表有 " . $num . " 筆資料<br>";
}
// --- 顯示資料 --- //
echo "<br>顯示資料(MYSQLI_NUM,欄位數):<br>";
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
printf("第 %s 筆資料 : %s<br>", $row[0], $row[1]);
}
echo "<br>顯示資料(MYSQLI_ASSOC,欄位名稱):<br>";
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
printf("第 %s 筆資料 : %s<br>", $row["id"], $row["text"]);
}
echo "<br>顯示資料(MYSQLI_BOTH,欄位數 & 欄位名稱皆可,採用欄位數):<br>";
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
printf("第 %s 筆資料 : %s<br>", $row[0], $row[1]);
}
echo "<br>顯示資料(MYSQLI_BOTH,欄位數 & 欄位名稱皆可,採用欄位名稱):<br>";
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
printf("第 %s 筆資料 : %s<br>", $row["id"], $row["text"]);
}
// 釋放記憶體
mysqli_free_result($result);
// 關閉連線
mysqli_close($con);
?>
</body>
</html>
基本上註解我寫得很清楚啦!有任何問題歡迎留言交流!
贊助廣告 ‧ Sponsor advertisements
留言區 / Comments
萌芽論壇