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

PHP 操作 MySQL 資料庫核心筆記 (一):分號例外、TEXT/DATE/SET 型別、萬用字元與 LIKE 用法

     編輯:PHP 相關知識

PHP 操作 MySQL 時的關鍵語法細節與資料型別陷阱,新手必讀。

1. 分號的例外規則

  • MySQL 命令列/腳本:每行以 ; 結束。
  • PHP 字串中執行 SQL:省略結尾分號,PHP 會自動補上。雙重分號導致語法解析錯誤。
    // 正確
    mysql_query("INSERT INTO t (a,b) VALUES ('$a','$b')");
      
    // 錯誤 (額外分號)
    mysql_query("INSERT INTO t (a,b) VALUES ('$a','$b');");
      
  • 垂直顯示結果:命令列以 \G 結尾替代分號,欄位垂直列出。
    SELECT * FROM users WHERE id=1\G
      

2. 易混淆資料型別

型別正確認知備註
TEXT非標準型別名,實為 LONG VARCHAR / MEDIUMTEXT / LONGTEXT 系列依長度選擇 TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT
DATE格式 YYYY-MM-DD (ISO 8601)PHP 產生:date('Y-m-d');支援減法得天數差
SET可儲存多個預定值 (最多 64 個),位元組合存儲ENUM 單選 (最多 65535 個);超過 64 個需拆多欄位

3. 萬用字元與 LIKE 實戰

萬用字元用途範例
*SELECT 選欄位:所有欄位SELECT * FROM t
%WHERE 值比對:任意長度字串 (含空)WHERE name LIKE '%keyword%'
_WHERE 值比對:單一任意字元WHERE code LIKE 'A_'
  • 關鍵差異:* 用於欄位清單,% 用於值比對,**必須搭配 LIKE 關鍵字**。
  • 全表搜尋:SELECT * FROM t WHERE col LIKE '%' 等同無條件。
  • 效能警示:LIKE '%...%' 導致全表掃描,大表必須用全文索引或外部搜尋引擎。

4. 參數化查詢防注入 (必要補充)

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

原文提到的 addslashes()、magic_quotes_gpc 已棄用/移除 (PHP 5.4+),**務必使用 PDO/MySQLi 參數化查詢**。

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