首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

PHP 連接 MySQL 資料庫實作範例 (mysqli/PDO 建議)

     編輯:MySQL 綜合教學

前言

早期 PHP 使用 mysql_* 函數連接 MySQL,但已於 PHP 7.0 移除。本文保留原始範例供參考,並提供現代 mysqli 與 PDO 的最佳實踐寫法。

原始範例 (已淘汰的 mysql_* 函數)

<?php
$lnk = mysql_connect('localhost', 'root', '') or die('Not connected: ' . mysql_error());
mysql_select_db('phpbb205', $lnk) or die("Can't use foo: " . mysql_error());

$query = "SELECT * FROM phpbb_forums";
$result = mysql_query($query);

while ($result_row = mysql_fetch_row($result)) {
    echo $result_row[2] . $result_row[3];
}
?>
警告: mysql_* 函數不支援預處理語句,易導致 SQL 注入,請勿在新專案使用。

現代寫法一:mysqli (物件導向)

<?php
$mysqli = new mysqli('localhost', 'root', '', 'phpbb205');

if ($mysqli->connect_errno) {
    die('Connection failed: ' . $mysqli->connect_error);
}

$sql = "SELECT forum_id, forum_name FROM phpbb_forums";
$result = $mysqli->query($sql);

while ($row = $result->fetch_assoc()) {
    echo $row['forum_id'] . ' - ' . $row['forum_name'] . "
"; } $result->free(); $mysqli->close(); ?>

現代寫法二:PDO (可攜性最佳)

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=phpbb205;charset=utf8mb4', 'root', '', [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]);

    $stmt = $pdo->query("SELECT forum_id, forum_name FROM phpbb_forums");
    while ($row = $stmt->fetch()) {
        echo $row['forum_id'] . ' - ' . $row['forum_name'] . "
"; } } catch (PDOException $e) { die('Connection failed: ' . $e->getMessage()); } ?>

安全性重點:預處理語句防 SQL 注入

<?php
// mysqli 預處理範例
$stmt = $mysqli->prepare("SELECT * FROM phpbb_forums WHERE forum_id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result();

// PDO 預處理範例
$stmt = $pdo->prepare("SELECT * FROM phpbb_forums WHERE forum_id = :id");
$stmt->execute([':id' => $id]);

總結

新專案請直接使用 PDO 或 mysqli,並善用預處理語句與錯誤處理機制,確保資料庫操作安全、可維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved