安裝 XAMPP
- 官網:https://www.apachefriends.org/zh_tw/index.html
- 在 Mac 上,可視 XAMMP 為虛擬主機;用 ip 位置、localhost、或點
go to application
都可以連到虛擬機 - 點
volume
-->mount
-->explore
,可以連到資料夾,一般會在 htdocs 寫我們的東西,路徑為localhost:8080/<在哪裡>/<檔案名稱>
PHP 語法基礎
<?php
<插入內容>
?>
- 也可寫
<?
?>
,但有些 server 不支援 - 中間的內容可寫 html;敘述句的結尾都要加分號;字串要用引號包起來
<?php echo "<h1>123</h1>"; ?>
$
- 宣告變數
<?php $a = 1; echo $a; ?>
.
- 用點來作字串拼接
<?php $a = "goodday"; $b = "Hava a nice one"; echo $a . $b; ?>
判斷式 if
<?php
$score = 70;
if ($score >= 60) {
echo "pass";
} else {
echo "failed";
}
?>
<br>
- 用
/n
無法換行,因為是用瀏覽器輸出,在 html 的解析下,會被解釋成空白,要用<br>
才行
<?php
for ($i = 1; $i < 11; $i++) {
echo "$i" . "<br>";
}
?>
陣列
sizeof(<放入陣列>)
來取得長度<?php $arr = array(20, 50, 40); echo $arr[0]; echo "<br>"; echo $arr[sizeof($arr) - 1]; ?>
用
var_dump
來取得整個陣列,會得到 array(3) { [0]=> int(20) [1]=> int(50) [2]=> int(40) }<?php $arr = array(20, 50, 40); var_dump($arr) //type, value ?>
用
print_r
來取得整個陣列,會得到 Array ( [0] => 20 [1] => 50 [2] => 40 )<?php $arr = array(20, 50, 40); print_r($arr) ?>
函式
<?php
function add($a, $b) {
return $a + $b;
}
echo add(5, 6);
?>
Apache 與 PHP 原理
流程:request => Apache(Server) => PHP(負責將 request 轉換成要輸出的形式) => output(e.g. html) => Apache => response
可以去 Apache2 資料夾裡的 htdocs 設定檔修改設定,像是預設地址⋯⋯等
- 別的網站可能是用別的 server
- 網址的規則由 server(為一個專門處理 request 和 response 的程式) 決定,通常預設為檔案路徑,如果在資料夾找不到該檔案,有可能是 server 設定成用別的檔案回傳。
資料庫系統簡介
專們處理資料的程式,提供方便的指令、語法讓你去存取、操作這些資料。相較之下,存在記憶體,程式關掉之後,資料會不見;存在檔案中的話,還要自己去處理資料,比較沒效率。
又可以分為兩種:關聯式資料庫(SQL)及非關聯式資料庫(NoSQL)。
關聯式資料庫系統
- 資料放在 table 中,不同資料分開放在不同的 table。
- 透過關聯的特性,把要的資料拿出來或把不相關的資料分開放,例如期中考分數跟學生資訊的關聯性在於學號,可以透過學號獲得這兩筆資料。
- 關聯資料語言為SQL
- 關聯式資料庫:MySQL、PostgreSQL、MS SQL,不同資料庫有不同的語法,但是主要概念類似,所以在不同 SQL 中切換的話,資料不用改很多
NoSQL (Not only SQL) 系統
- SQL 有一定的資料型態,像是資料須為字串或數字⋯⋯等,但比較常使用
- 沒有 schema(結構),可以存像是 JSON 格式的資料
- 如果有一些 log (特性:東西很多、會變)要存,存在 NoSQL 的話不用改結構,只要新增就好;存在 SQL 則比較會遇到需要修改結構的問題
- 非關連式資料庫:MongoDB
- 通常存大量的資料、log
- 沒有支援 JOIN
- 利用 Key-value 的方式來儲存資料
介紹 MySQL
怎麼連到 MySQL
- 用 Commandline
- 用其他管理資料庫的軟體所提供的 GUI 介面,像是:phpMyAdmin(完整,但最近有爆出安全性疑慮)、Adminer
Table schema 簡介
中文為結構,一開始會先思考結構需有什麼元素
名稱
像是 key
形態
日期、字串、小數、整數(INT)⋯⋯等。數值的部分,如果很確定資料內容不會更動,可選擇相對應的位元數,比較不佔空間
編碼與排序
database 有預設的值
屬性
索引
AI
Auto ingrement,自動遞增,但不一定連續
主鍵
- Primary Key (PK)
- 設定為主鍵的欄位須滿足條件:不能是空的、不能重複,通常設定為主鍵的欄位為最重要的欄位,像是員工的編號、會員的帳號
####唯一
點下去之後,代表這個欄位的資料不能重複,重複資料的話就會被擋下來
####索引
可以很快找到想要找的資料,建立索引需要時間,也會佔用資料庫的空間,可以為兩個欄位建同一個索引
SQL 指令介紹
SELECT
- 查詢
SELECT <e.g. title, id 或 *> FROM <資料表>
,*
代表全部,也可放欄位名稱、不是欄位相關的資料SELECT <id as name> FROM <資料表> WHERE <id = 2> and <username = xxx>
如果不想要 show id 出來,可改為 name;用WHERE
來設條件、and
來增加條件
INSERT
- 新增內容
INSERT INTO <資料表> (<要新增資料的欄位名稱>) VALUES (<"要新增的內容">)
- 欄位名稱通常可不用反引號,除非名稱很容易讓人混淆
UPDATE
- 更新資料
UPDATE <資料表> SET <欲更新的內容,用逗號隔開>
- 也可以用
WHERE
來指定需要更新哪一個資料的哪一個部分
DELETE
- 刪除
DELETE FROM <資料表> WHERE