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

PHP 操作 MySQL 完整範例:連線、建庫、建表、插入資料

     編輯:MySQL 綜合教學

PHP 操作 MySQL 完整範例:連線、建庫、建表、插入資料

使用 PHP 內建 mysqli 擴展(舊 mysql 擴展已棄用/移除)示範資料庫完整操作流程。

現代寫法:mysqli 物件導向風格

<?php
header("Content-Type: text/html; charset=utf-8");

// 1. 連線
$mysqli = new mysqli("localhost", "root", "aaaaaa");
if ($mysqli->connect_errno) {
    die("資料庫連線失敗: " . $mysqli->connect_error);
}
$mysqli->set_charset("utf8"); // 設定連線字符集

// 2. 建立資料庫
$dbName = "phpTest";
if (!$mysqli->query("CREATE DATABASE IF NOT EXISTS `$dbName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci")) {
    die("建立資料庫失敗: " . $mysqli->error);
}
$mysqli->select_db($dbName);

// 3. 建立資料表
$sql = "CREATE TABLE IF NOT EXISTS `txt` (
  `id` TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(20) NOT NULL DEFAULT '',
  `password` CHAR(32) NOT NULL DEFAULT '',
  `email` VARCHAR(40) NOT NULL DEFAULT '',
  `regdate` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '註冊時間戳',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";

if (!$mysqli->query($sql)) {
    die("建立資料表失敗: " . $mysqli->error);
}

// 4. 插入資料(預處理語句,防 SQL 注入)
$stmt = $mysqli->prepare("INSERT INTO `txt` (username, password, email, regdate) VALUES (?, ?, ?, ?)");
$stmt->bind_param("sssi", $username, $password, $email, $regdate);

$username = "小王";
$password = "passwords"; // 實際應用請用 password_hash()
$email = "12345@163.com";
$regdate = time();

if (!$stmt->execute()) {
    die("插入資料失敗: " . $stmt->error);
}
echo "插入成功,自增 ID: " . $mysqli->insert_id;

$stmt->close();
$mysqli->close();
?>

關鍵最佳實踐

項目建議
擴展選擇使用 mysqli 或 PDO,勿用已移除的 mysql_* 函數。
字符集連線後立即 set_charset("utf8") 或 utf8mb4;資料庫/表/欄位同步設定。
預處理語句所有帶變數的 SQL 必須用 prepare() + bind_param(),防止 SQL 注入。
錯誤處理檢查 connect_errno、error、execute() 返回值,記錄日誌而非直接 die()。
密碼儲存絕不儲存明文,使用 password_hash() (BCRYPT) + password_verify()。
時間儲存用 INT UNSIGNED 存 Unix 時間戳,或 DATETIME 存可讀時間;避免 TIMESTAMP 2038 年問題。

程序風格對照(舊 mysql_* 函數,僅供維護舊專案參考)

<?php
$conn = mysql_connect("localhost", "root", "aaaaaa") or die("連線失敗: " . mysql_error());
mysql_select_db("phpTest", $conn) or die("選庫失敗");
mysql_query("SET NAMES UTF8", $conn) or die("字符集設定失敗");

$sql = "CREATE TABLE txt (id TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(20), password CHAR(32), email VARCHAR(40), regdate INT(10), PRIMARY KEY (id))";
mysql_query($sql, $conn) or die("建表失敗: " . mysql_error());

$regdate = time();
$input = "INSERT INTO txt(username, password, email, regdate) VALUES ('小王', 'passwords', '12345@163.com', $regdate)";
mysql_query($input, $conn) or die("插入失敗: " . mysql_error());
?>

警告:mysql_* 函數在 PHP 5.5.0 棄用,PHP 7.0.0 完全移除,新專案嚴禁使用。

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