select
語法:
SELECT `查詢的欄位` [FROM `資料表名稱` 附加的篩選條件]
所有資料庫、資料表、欄位名稱,都建議前後加上``
[WHERE 篩選條件]
[GROUP BY `欄位名稱`][HAVING GROUP的篩選條件]
[ORDER BY {UNSIGNED_INTEGER | `欄位名稱` | FORMULA} [ASC | DESC] ,...]
[LIMIT [起點,] 筆數]
得到的結果如下:
<?php
// 建立資料庫連接
$dsn = 'mysql:host=localhost;dbname=your_database;charset=utf8mb4';
$username = 'your_username';
$password = 'your_password';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 準備SQL語句
$sql = "SELECT * FROM news ORDER BY date DESC";
// 預備語句
$stmt = $pdo->prepare($sql);
// 執行語句
$stmt->execute();
// 取得結果集
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 輸出結果
foreach ($results as $row) {
// 處理每一筆資料
$id = $row['id'];
$title = $row['title'];
$content = $row['content'];
$author = $row['author'];
$date = $row['date'];
$category = $row['category'];
$media = $row['media'];
$views = $row['views'];
// 輸出資料
echo "ID: $id<br>";
echo "標題: $title<br>";
echo "內容: $content<br>";
echo "作者: $author<br>";
echo "日期: $date<br>";
echo "類別: $category<br>";
echo "媒體: $media<br>";
echo "點閱數: $views<br>";
echo "<br>";
}
} catch (PDOException $e) {
echo "資料庫連接錯誤:" . $e->getMessage();
}
?>
大致上和 admin.php 的流程差不多,所以,其實可以直接拿 admin.php 來改即可。
用 ? 佔位符讀取資料的語法為:
$stmt = $pdo->prepare('SELECT * FROM `資料表` WHERE `欄位` = ?');
$stmt->execute(['值']);
fetch()
方法來取資料,一次只會抓出一筆資料,所以一般會搭配 while()
迴圈以便將所有資料抓出
while ($news = $stmt->fetch()) {
echo "{$news['id']}<br>";
echo "{$news['title']}<br>";
...
}
fetchAll()
方法會抓出所有資料,抓出後再用 foreach()
迴圈中來一筆一筆拆開
$all_news = $stmt->fetchAll();
foreach ($all_news as $news) {
echo "{$news['id']}<br>";
echo "{$news['title']}<br>";
...
}
admin.php
另存為 index.php
,並將資料庫寫入的部份改為讀出所有資料
<?php
// 建立PDO連線
$dbname = 'blog';
$host = 'localhost';
$charset = 'utf8mb4';
$username = 'root';
$password = '1qazXSW@';
// 建立資料庫連接
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// 準備SQL語句
$sql = "SELECT * FROM news ORDER BY date DESC";
// 預備語句
$stmt = $pdo->prepare($sql);
// 綁定參數並執行語句
$stmt->execute();
$news = $stmt->fetchAll();
foreach ($news as $row) {
// 在這裡處理每一筆資料
echo "<li>{$row['title']}</li>";
}
} catch (PDOException $e) {
echo "資料庫連接錯誤:" . $e->getMessage();
}
執行看看,有看到文章的標題列表就表示OK了。