狠狠撸

狠狠撸Share a Scribd company logo
建構動態網站 第4講
SQL
講師:David Malan
哈佛大學公開課
by Bater 2014.5
課程連結
本講大綱
● 程式碼品質
● 框架引用
● XPath
● fgetcsv
● SQL
程式碼(網站)品質
● 使用者可能會有意料之外或惡意操作(如負
數,空白,全形,保留字<>"$#(-?... ),可能造
成程式意外或毀損
● 基礎的網站防護:SQL injection資料隱碼攻
擊,Cross-Site Scripting(XSS)跨站腳本攻
擊
● 有大量複製貼上的片段通常不是好程式,要
思考是否可以重複運用
● 是否可用loop(迴圈)取代
嘗試利用車牌進行 sql injection
程式碼(網站)品質 (續)
● 函式與變數命名是否有意義(而非xx,tt,aa..)
● 是否有適當註解
● 每行程式不超過80字元 (約編輯器寬),不
過不強制,只要風格合理且一致即可
●
網頁框架的應用
● 多個頁面有相同的區塊,通常不會複製貼上
多次相同程式碼;而是會將區塊獨立出來,
每個頁面去重複引用。
● 例如:
首頁.php
訂單.php
主選單
主選單
主選單.php
首頁.php
訂單.php
語法
● include()
○ 如果頁面不存在,會略過(待確認)
● require()
○ EX. require(“header.php”)
○ 如果該頁面不存在,php解析會馬上終止
○ 建議使用,比較方便debug
● include_once()
● require_once()
○ 只會引用一次,避免巢狀無限引用
元素頁面的路徑
● 為了避免讓使用者直接訪問,可利用上周所
講的方法,放在無法訪問的路徑下
● EX: 谤别辩耻颈谤别(“../濒颈产/丑别补诲别谤.辫丑辫”)
利用函式取代重複的程式
● 看起來有點多此一舉,但隨著架構越來越複
雜,比較能靈活運用
● 例如傳入參數
XPath
範例資料結構
ps.xml的id屬性不可用數字開頭
利用foreach
利用XPath
簡化後 (child::可省略)
xpath(“//item[@id=’$var’]”);
完整寫法如下:
遍尋所有的目錄,優點是省事,缺點是犧牲效
能
XPath
● 因為有了XPath,XML可以作為小型的資料
庫使用
● 相較之下,CSV沒有類似的API可以查詢
各种资料结构
● fgetcsv (PHP取得csv的方法)
● ?!==?運算子,除了判斷值之外也會判斷資
料型態,因為PHP對於資料型態很寬鬆。
例如:(===相對於==)
○ false !== 0 回傳 true
○ false != 0 回傳 false
● fputcsv (PHP將資料轉為csv的方法)
fgetcsv與fputcsv
fgetcsv 範例
總結XML與CSV的優缺點
XML優點:
● XPath可直接查詢
● 有結構與層級概念
● 不需特殊的工具就可
編輯
缺點:
● 檔案教CSV大(多開頭
結尾字元)
● 沒有權限控管、資料
型態檢查、寫入限制
CSV優點:
● 檔案小
缺點:
● 無法直接查詢,一定
要遍歷整份文件
● 沒有階層概念
SQL (Structured Query Language)
結構化查詢語言
(終於要進入正題了)
SQL
● SQL語言有共通的標
準,基本上通用,但是
每家會有少部分自己獨
特的寫法
● MySQL跟PHP有很好
的搭配(因為都不用錢)
● 右圖為常見的SQL指令
● 推薦使用phpMyAdmin
管理 (免空上也是)
建資料庫時的心法
● char是故定長度,好處是索引方便
● varchar可以節省空間
● text,如果內容會超過64kb建議使用(巨量
資料),實際上是存放在硬碟的某處,這邊只
是留個指向
● 是否有負值、時間戳記
● 是否允許為空
● 預設值
● 自動增值
● 主鍵primary key,MySQL只能設一個主鍵
(預設為索引且唯一)
● 唯一值,非主鍵,但是唯一
● 索引index,事先儲存資料的樹狀描述,需
要花額外的硬碟空間,但是搜尋效率會大幅
提高,否則就會查找每一筆資料
● fulltext 全文索引
數據庫引擎
● MyISAM(預設),高效但不支援transactions
● InnoDB (下周會講)
● MEMORY只存在記憶體中,需要很多快取
查詢儲存又馬上丟棄可使用
● FEDERATED用於大量數據,可進行數據
分區
● ARCHIVE提供很好的壓縮
● CSV類似前面提的CSV
實作範例
程式pdf瀏覽

More Related Content

哈佛公開課程_E-75 建構動態網站 第4講_SQL