環境設置:XAMPP (Apache + MariaDB + PHP + Perl)
php 基礎
<?php ?>
:php 執行標籤
echo
:印出東西
$
:變數宣告
A .
B:字串拼接
<?php
$a = "123"; // 字尾記得加分號
$b ="456";
echo $a . $b; //輸出 123456
?>
var_dump($arr)
:印出 array 的詳細資料(array 長度、index、值)
print_r($arr)
:印出 array 的詳細資料
request => apache(server) => php => html => apache => response
apache 的功能
是一個 server,專門處理 request 跟 response 的程式
把 request 拿進來,傳到 php,php 去執行 php 的檔案,產生一個 output,傳回 apache,再傳回 client 端,變成 response
function run (request) {
response = php(request)
send response
}
apache 決定 request 傳到哪裡
apache 設定網址是檔案路徑
資料庫系統
是一個專門處理資料的程式
把資料存進去的地方,可以用程式去把資料放進去或撈出來
好用、好維護、效率好
關聯式資料庫
- SQL
- 用 table(資料表) 存放資料
- 藉由兩個 tabel 的關聯取得兩個 table 的所有資料
- 資料型態會有限制
- 有名的資料庫系統:MySQL、PostgresSQL
非關聯式資料庫
- NoSQL(Not only sql)
- 資料型態較不受限,新增欄位比較自由
- 有名的資料庫系統:mongodb
MySQL
(有另一個東西叫 MariaDB,兩個用起來差異不大)
phpMyadmin
一個管理 MySQL (資料庫) 的介面,是一個 php 檔案
table schema
資料結構
MySQL 基礎語法
SELECT [column] FROM [tabel] WHERE (column = value)
:查詢資料,在指定條件下,從某資料表撈出資料,
INSERT INTO [tabel] (column-a, column-b) VALUES(value-a, value-b)
:新增資料,在資料表插入資料
UPDATE [tabel] SET [column] = [value]
:修改資料,更新資料表某欄位的值
DELETE FROM [tabel] WHERE (column = value)
:刪除資料,刪除 tabel 裡指定條件的資料
Disable cache
DevTool -> Network -> 勾選 Disable cache
當檔案改變時發現沒有作用,是因為瀏覽器會暫存之前的的狀態,載入的東西是舊的,所以把 Disable 勾選起來避免東西被暫存
GET、POST
$_GET
:在網址列後面用 "?" 加參數,表單 method 用 GET,php 用 $_GET
取到這個參數的值
// 網址列 http://localhost/a.php?a=123
// 表單
<form method="GET" action="php 檔">
// php 檔
<?php
echo $_GET['a']; //輸出 123
?>
$_POST
:表單 method 用 POST,php 用 $_POST
取值
// 表單
<form method="POST" action="php 檔">
<input type="text" name="a" />123
// php 檔
<?php
echo $_POST['a']; //輸出 123
?>
php 連線 MySQL 資料庫
- 新增使用者:
到 phpMyadmin -> 新增使用者帳號,設定帳號、主機、密碼 -> 勾選建立與使用者同名的資料庫並授予權限 -> 全域權限勾選全選 -> 執行 => 就會出現新的 database 名稱是剛剛設定的帳號名 - 建立資料表:
輸入資料表名稱、欄位名稱,設定型態、長度/值、編碼與排序、索引 -> 執行 - 資料庫連線設定檔
注意:設定檔不要一起 commit 上去,不然帳號密碼會外洩
<?php
$server_name = 'localhost';
$username = 'myusername';
$password = 'mypassword';
$db_name = 'mydb';
$conn = new mysqli(
'$server_name', '$username' '$password', '$db_name'
);
// 資料庫連線錯誤,用 die 讓下面程式停止執行
if (!empty($conn->connect_error)) {
die('資料庫連線錯誤:' . $conn->connect_error);
}
// 設定編碼、設資料庫時區
$conn->query('SET NAMES UTF8');
$conn->query('SET time_zone = "+8:00"');
?>
- 在 php 執行檔引入資料庫:
用 query 拿到資料庫的資料(query() 裡面放 sql 的語法就可以選擇、編輯、刪除) -> 檢查有沒有結果 -> 如果有結果再用 fetch_assoc 拿到各個資料
<?php
require_once($'conn.php');
$result = $conn_query("SELECT * FROM users");
if (!$result) {
die($conn->error);
}
// 先把資料都 fetch_assoc(),用 while 取出所有使用者資料
while ($row = $result->fetch_assoc()) {
echo "id:" . $row['id'] . "<br>";
echo "user:" . $row['username'];
}
?>
資料應用
可以先把 MySQL 用一個變數接起來,再放進去 query()
新增資料:INSERT INTO
<?php
...
$username = $_POST['username'];
$sql = sprintf(
"insert into users(username) values('%s')",
$username
);
$result = $conn->query($sql);
...
// 自動跳轉到某頁面
header("Location: index.php")
?>
刪除資料:DELETE FROM
$sql = sprintf(
"delete from users where id = %d",
$id
);
編輯資料:UPDATE SET
$sql = sprintf(
"update users set username='%s' where id=%d",
$username,
$id
);