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

PHP 新手筆記 12 則:SQL 技巧、超全域變數、時區、編碼與 intval 坑

     編輯:PHP 相關知識

前言

作者從零開始學 PHP 並邊做專案邊整理的實戰筆記,涵蓋 SQL 分頁、查詢字串取得、日期比較、MySQL 日期格式、時區設定、intval 型別轉換陷阱、中文編碼等 12 個高頻踩坑點,適合入門開發者快速查閱。

筆記彙整

1. SQL 只取文字前 N 字

SELECT LEFT(content, 20) AS summary FROM articles;

2. 分頁利器 LIMIT

-- 從第 0 筆起取 30 筆(第 1 頁)
SELECT * FROM posts LIMIT 0, 30;
-- 第 2 頁
SELECT * FROM posts LIMIT 30, 30;

3. 兩表 JOIN 寫法

-- 共同欄位名相同
SELECT * FROM t1 JOIN t2 USING (uid);

-- 欄位名不同
SELECT * FROM t1 JOIN t2 ON t1.uid = t2.user_id;

4. 取得 Query String 參數

// 推薦:$_GET 只抓 GET
$page = $_GET['page'] ?? 1;

// 也可用 $_REQUEST 同時吃 GET/POST/COOKIE(注意安全性)
$page = $_REQUEST['page'] ?? 1;

// 早期笨做法(不推薦)
parse_str($_SERVER['QUERY_STRING'], $out);
$page = $out['page'] ?? 1;

5. 日期比較其實是字串比較

MySQL DATE、DATETIME 欄位在 SQL 中以 `'YYYY-MM-DD'` 字串比較即可,格式一致時字典序等同時間序。

6. MySQL 日期輸入格式寬鬆

以下皆合法:2000-02-03、2002.02.03、2002.2.3、02.02.03。核心規則:必須有月、日,分隔符為 `-` 或 `.`。

7. date() 時區問題:預設 GMT 少 8 小時

兩種修法:

// php.ini
date.timezone = "Asia/Shanghai"

// 或腳本開頭
date_default_timezone_set('PRC'); // 或 'Asia/Shanghai'

8. intval() 陷阱:非純數字字串會變 0

$v = 'A5A';
echo intval($v); // 0 !因為開頭非數字

$v = '123abc';
echo intval($v); // 123 只取前導數字

// 結論:欄位為 varchar 存非純數字時,嚴禁用 intval()

9. SQL 參數型別不一致導致語法錯誤

欄位為 VARCHAR 卻用數值型別繫結,或反之,可能引發「缺少 )」等誤導性錯誤。務必對應欄位型別繫結。

10. 浮點數轉整數直接捨去小數

(int) 3.9  // 3
intval(3.9) // 3
// 不會四捨五入

11. 自增欄位 INSERT 寫 NULL

INSERT INTO t (id, name) VALUES (NULL, 'test'); -- id 自動產生

12. 中文亂碼三步驟

// 1. 連線後設定字元集
mysqli_query($link, "SET NAMES 'utf8mb4'"); // 或 gb2312

// 2. 資料庫、表、欄位全用 utf8mb4
// 3. PHP 檔案儲存為 UTF-8 無 BOM

// 跨編碼轉換
$utf8 = iconv('GBK', 'UTF-8', $gbk_str);

給新手的額外建議

  • 改用 PDO + 預處理語句 取代 mysql_* 舊函式(已移除)。
  • 錯誤模式設為 PDO::ERRMODE_EXCEPTION,統一 try-catch 處理。
  • 密碼雜湊用 password_hash() / password_verify(),別再用 MD5/SHA1。
  • 佈署前檢查 php.ini:display_errors=Off、log_errors=On、expose_php=Off。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved