PHP:從 MySQL 資料庫中取得資料表的筆數與資料

2019/06/16 17,533 0 網站技術 , 伺服器 , 資料庫 , PHP , SQL

萬事起頭難,網路上大量專業的資料不知從何學起,我甚至還有看到更方便連接資料庫的方式,先寫好一套類別(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

萌芽論壇