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

MySQL 命令行連接與 PHP 連接基礎語法完整指南

     編輯:MySQL 綜合教學

前言:連接是一切操作的起點

無論是 DBA 在命令行維護,還是 PHP 開發者編寫業務代碼,**建立連接、選擇庫、執行 SQL、關閉連接** 是不變的四步曲。本文系統整理 MySQL 二進制客戶端連接參數、PHP mysql_* 扩展 (舊版) 與 mysqli/PDO (現代) 的連接語法、常用函數對照表。

一、命令行客戶端連接

標準登入

mysql -u root -p
# Enter password: ******

常用參數

參數說明示例
-h主機-h 192.168.1.10
-P端口-P 3306
-u用戶-u admin
-p密碼 (緊跟無空格或交互輸入)-ppass / -p
-D直接選擇庫-D testdb
-e執行單條 SQL 後退出-e "SELECT VERSION();"
--ssl-mode=REQUIRED強制 SSL

退出

exit
\q
Ctrl+D

二、PHP 連接 MySQL:三代 API 對比

API狀態連接函數特點
mysql_*❌ PHP 7.0 移除mysql_connect()舊教程常見,新專案**禁用**
mysqli✅ 推薦mysqli_connect() / new mysqli()面向過程/物件雙模式、支援預處理、多語句、事務
PDO_MySQL✅ 推薦new PDO('mysql:host=...;dbname=...', $user, $pass)資料庫抽象層、支援 12+ 驅動、預處理、異常處理

三、mysqli 連接完整示例 (物件風格)

$mysqli = new mysqli('localhost', 'guest', 'guest123', 'tutorials', 3306);
if ($mysqli->connect_errno) {
    die("連接失敗: " . $mysqli->connect_error);
}
echo "連接成功";

// 執行查詢
$result = $mysqli->query("SELECT id, name FROM users WHERE status=1");
if ($result) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: {$row['id']}, Name: {$row['name']}
"; } $result->free(); } // 預處理 (防注入、計劃複用) $stmt = $mysqli->prepare("INSERT INTO logs (msg, created_at) VALUES (?, NOW())"); $stmt->bind_param("s", $message); $message = "用戶登入"; $stmt->execute(); $stmt->close(); $mysqli->close();

四、PDO 連接完整示例

$dsn = 'mysql:host=localhost;dbname=tutorials;charset=utf8mb4';
$opt = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,  // 真預處理
];
$pdo = new PDO($dsn, 'guest', 'guest123', $opt);

$stmt = $pdo->prepare("SELECT id, name FROM users WHERE status=?");
$stmt->execute([1]);
while ($row = $stmt->fetch()) {
    echo "ID: {$row['id']}, Name: {$row['name']}
"; }

五、常用 PHP MySQL 函數/方法對照表

功能mysqli (物件)PDO舊 mysql_* (僅參考)
連接new mysqli()new PDO()mysql_connect()
查詢$mysqli->query()$pdo->query()mysql_query()
預處理$mysqli->prepare()$pdo->prepare()無
綁定參數$stmt->bind_param()$stmt->bindValue() / execute([])無
獲取關聯數組$result->fetch_assoc()$stmt->fetch(PDO::FETCH_ASSOC)mysql_fetch_assoc()
獲取數字索引數組$result->fetch_row()$stmt->fetch(PDO::FETCH_NUM)mysql_fetch_row()
釋放結果集$result->free()$stmt->closeCursor()mysql_free_result()
關閉連接$mysqli->close()$pdo = nullmysql_close()
事務$mysqli->begin_transaction() / commit() / rollback()$pdo->beginTransaction() / commit() / rollBack()mysql_query("BEGIN")
錯誤信息$mysqli->error$pdo->errorInfo()mysql_error()

六、MySQL 常見數據類型速查 (建表時選型)

分類類型範圍/說明
數值TINYINT-128~127 / 0~255 (UNSIGNED)
SMALLINT-32768~32767
MEDIUMINT-8388608~8388607
INT-2147483648~2147483647
BIGINT-2^63~2^63-1
FLOAT單精度
DOUBLE雙精度
DECIMAL(M,D)精確定點數,金額必用
日期時間DATETIME1000-01-01 ~ 9999-12-31,無時區
TIMESTAMP1970-01-01 ~ 2038-01-19,UTC 存儲,會話時區轉換
DATE只存日期
TIME只存時間
YEAR1901~2155
字符串CHAR(N)定長,右側空格填充
VARCHAR(N)變長,建議優先用
TEXT長文本,65535 字符
BLOB二進制長數據
ENUM枚舉,單選
SET集合,多選

結語

**命令行用 mysql -u -p,PHP 新專案首選 mysqli 或 PDO (預處理+異常模式),舊 mysql_* 徹底淘汰**。掌握連接參數、預處理綁定、結果集遍歷、事務控制、錯誤處理五大核心,即可應對 99% 的 PHP+MySQL 開發場景。建議將對照表打印貼在工位,寫代碼時隨時查閱。

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