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

PHP 學習筆記精華:傳值 JS、時間戳轉換、四捨五入、權限、索引、超全域變數、Heredoc

     編輯:PHP 綜合知識

1. PHP 向 JavaScript 傳值

核心原則:**PHP 在伺服器端執行產生文字,JS 在瀏覽器端執行**。輸出 JS 代碼時,字串值必須用引號包裹,並處理特殊字元。

<?php
$time = '2023-05-20 13:25:55';
$escaped = json_encode($time); // 自動處理引號、換行、Unicode
?>
<script>
document.getElementById('time').innerHTML = <?= $escaped ?>;
// 輸出:document.getElementById('time').innerHTML = "2023-05-20 13:25:55";
</script>

錯誤示範:`innerHTML = <?php echo $time ?>;` → 缺引號導致 JS 語法錯誤。

2. 時間戳與日期時間互轉

<?php
// datetime → timestamp
$dt = '2023-05-20 13:25:55';
$ts = strtotime($ts); // 1684560355

// timestamp → datetime
echo date('Y-m-d H:i:s', $ts); // 2023-05-20 13:25:55

// MySQL DATETIME 欄位直接讀取為字串,可直接 strtotime()
// 或用 MySQL UNIX_TIMESTAMP(datetime_col) 在 SQL 層轉換
?>

3. 數值四捨五入與格式化

<?php
$val = 123.456789;

// 四捨五入保留 2 位小數(字串)
echo number_format($val, 2); // "123.46"

// 格式化不四捨五入(截斷)
echo sprintf('%.2f', $val);  // "123.45" (注意:sprintf 實際也會四捨五入,若需截斷需 floor/ceil)

// 精確金額計算:使用 BCMath 或整數分單位
$price = 19.99;
$qty = 3;
$total = bcmul($price, $qty, 2); // "59.97"
?>

4. MySQL 權限系統(GRANT/REVOKE)

-- 四個權限層級
-- 1. 全域
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'pwd';

-- 2. 資料庫級
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'dev'@'localhost';

-- 3. 資料表級
GRANT SELECT ON mydb.users TO 'readonly'@'%';

-- 4. 欄位級
GRANT SELECT (id, name), UPDATE (name) ON mydb.users TO 'limited'@'%';

-- 撤銷
REVOKE INSERT ON mydb.* FROM 'dev'@'localhost';

-- 刷新生效
FLUSH PRIVILEGES;

5. 建立索引優化查詢

-- 單欄索引
CREATE INDEX idx_name ON users(name);

-- 組合索引(最左前綴原則)
CREATE INDEX idx_status_created ON orders(status, created_at);

-- 查看索引
SHOW INDEX FROM users;

-- 避免過度索引:寫入效能下降、佔用空間

6. 超全域變數取得請求資料

變數來源用途
$_GETURL 查詢字串查詢、分頁、搜尋參數
$_POSTPOST 請求體表單提交、API 資料
$_REQUESTGET+POST+COOKIE 合併**不建議使用**(來源不明、安全風險)
$_SERVER伺服器環境IP、User-Agent、請求方法等
$_FILES檔案上傳處理上傳檔案
$_COOKIECookie追蹤、偏好設定
$_SESSIONSession登入狀態、購物車

7. Heredoc / Nowdoc 字串語法

<?php
$name = 'World';

// Heredoc:解析變數、跳脫序列
$sql = <<<SQL
SELECT * FROM users
WHERE name = '$name'
AND status = 1
SQL;

// Nowdoc (PHP 5.3+):單引號行為,不解析變數
$raw = <<<'RAW'
{$name} 不會被解析
\n 也不會換行
RAW;

echo $sql; // 含變數值
echo $raw; // 原樣輸出
?>

規則:結束標識必須頂格、獨佔一行、前後無空白;Heredoc 等同雙引號,Nowdoc 等同單引號。

總結

這些是 PHP 開發高頻核心知識點:輸出 JS 必須 json_encode、時間處理用 strtotime/date、金額用 BCMath、權限分級最小化、索引遵循最左前綴、拒用 $_REQUEST、長字串用 Heredoc。掌握細節,避開坑洞,寫出健壯代碼。

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