首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP PDO 連接 MySQL 與資料查詢實作指南

     編輯:PHP 相關知識

前言

PDO (PHP Data Objects) 提供統一的資料庫存取介面,支援多種資料庫驅動程式。本文示範如何使用 PDO 連接 MySQL 並執行查詢,同時修正原文中混雜 SQLite3 的錯誤範例。

資料庫連接設定

<?php
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
$options = [
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  PDO::ATTR_EMULATE_PREPARES => false,
];

try {
  $pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
  die("資料庫連線失敗: " . $e->getMessage());
}
?>

查詢資料範例

1. 簡單查詢 (query)

<?php
$sql = "SELECT id, name, email FROM users WHERE status = 1";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch()) {
  echo "ID: {$row['id']}, 姓名: {$row['name']}, Email: {$row['email']}
";
}
?>

2. 預處理語句 (prepare + execute) - 推薦用法

<?php
$sql = "SELECT * FROM products WHERE category_id = :cat AND price < :max_price";
$stmt = $pdo->prepare($sql);
$stmt->execute(['cat' => 3, 'max_price' => 1000]);
$results = $stmt->fetchAll();

foreach ($results as $product) {
  echo "{$product['name']} - NT$ {$product['price']}
";
}
?>

3. 取得單筆資料

<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([123]);
$user = $stmt->fetch();
if ($user) {
  echo "歡迎, {$user['name']}!";
}
?>

常見操作速查

操作方法
影響行數$stmt->rowCount()
最後插入 ID$pdo->lastInsertId()
交易控制$pdo->beginTransaction() / commit() / rollBack()
錯誤處理try-catch 捕捉 PDOException

注意事項

  • 原文範例錯誤使用 sqlite3 類別操作 MySQL,實際應使用 PDO 配合 mysql 驅動
  • 務必啟用 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 以便除錯
  • 所有使用者輸入參數都應透過預處理語句綁定,防止 SQL 注入
  • 生產環境建議使用連線池或持久連線 (PDO::ATTR_PERSISTENT => true)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved