[BE101] PHP介紹


Posted by yymarlerr on 2021-07-22

安裝 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









Related Posts

一些不太好記卻很好用的 CSS 屬性

一些不太好記卻很好用的 CSS 屬性

Git 狀況劇_忘了開新分支寫作業

Git 狀況劇_忘了開新分支寫作業

 [10] 型別 - 內建型別、基本型別值

[10] 型別 - 內建型別、基本型別值


Comments