早期 PHP 使用 mysql_* 函數連接 MySQL,但已於 PHP 7.0 移除。本文保留原始範例供參考,並提供現代 mysqli 與 PDO 的最佳實踐寫法。
<?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 注入,請勿在新專案使用。
<?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();
?>
<?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());
}
?>
<?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,並善用預處理語句與錯誤處理機制,確保資料庫操作安全、可維護。