現在要來做一個範例 : 歌曲資料庫的新增/修改/刪除/顯示。 首先我們先把登入登出的功能做出來。 預計要有幾個檔案 : login.php 用來顯示登入表單,以及進行登入驗證。 logout.php 用來登出,清除已登入的狀態。 check.inc.php 用來檢查是否為登入狀態。 process.php 當完成登入後的處理作業。
PHP連接MySQL有三種方式 : MySQL、MySQLi、PDO 參考資料 : https://www.w3schools.com/PHP/php_mysql_connect.asp 因為MySQL連接方式在新版7.0已經不支援,所以不建議使用 參考資料 : https://www.php.net/manual/en/function.mysql-connect.php 使用這個函數phpversion(),可以知道你的PHP版本。
(系統開發流程 : 計畫 > 分析 > 設計 > 建置 > 測試整合 > 上線&維護) 現在我們用一個實際的例子來說明系統分析與設計的過程。
需求 : 我們希望開發一個提供學校學生可以在網路上選課的系統。 (1) 首先把需求畫成「使用案例圖 Use Case Diagram」。 使用案例圖的相關資訊,可以參考 : https://www.lucidchart.com/pages/uml-use-case-diagram
(1) 建立ODBC連線 取得ODBC驅動程式並安裝 https://dev.mysql.com/downloads/connector/odbc/ Install MySQL Connector ODBC (2) 建立資料來源 (3) 啟用EXCEL的開發人員 (4) 設定巨集安全性 (5) 透過VBA使用ODBC連線MYSQL 範例一、從MYSQL抓出資料秀在EXCEL上 Sub ShowData() Range("A1:C99").Clear On Error GoTo ErrorHandler Set myCon = CreateObject("ADODB.Connection") myCon.Open "Driver={MySQL ODBC 5.3 UNICODE Driver};Server= server-ip ;Database= dbname ;User= root ;Password= yourpassword ;Option=3;" A = CStr(Cells(1, …
I 、基本觀念 問題:什麼是 Lock (鎖定) ? 答案:Lock 的主要目的是避免資料發生錯誤,把不應該進行動作的指令排除在外,並讓應該進行動作的指令能夠順利完成。 問題:什麼是Table Lock (表單鎖定) ? 什麼是Row Lock (紀錄鎖定)? 答案:表單鎖定就是將整個資料表鎖定,讓其他連線無法讀取及異動,直到資料處理完畢為止。紀錄鎖定就是將指定的紀錄鎖定,讓其他連線無法讀取及異動,直到資料處理完畢為止。 問題:InnoDB與MyISAM的鎖定有何差別? 答案:MyISAM 沒有交易功能 (Transaction),若要避免多個連線交互執行 SQL 指令,造成資料錯亂,只好使用鎖定資料表 (Table Lock) 的方式,InnoDB則可以使用Table Lock 與Row Lock。 問題:MySQL不同版本的鎖定有何差別? 答案:MySQL不同版本的鎖定原理一樣,只是語法上有些差異。 例如 : MySQL 5.5 使用 Select ... lock in share mode; MySQL 5.5 使用 Select ... for update; MySQL 8.0 還可以使用 Select ... for share…
需求~建立一個資料庫系統,紀錄公司的產品資料,並且記錄客戶的訂單、進貨、出貨、收款。 需要產出以下內容以及回答問題~ (因為答案不是只有一種,資料表結構不同,想法就可能不同) (1) 這個系統的ERD (2) 這個系統的資料表單結構(Schema) (3) 老闆想知道在某個時間區間內,哪個客戶購買金額最大?最少? 思考 : 從這個需求知道,需要一個客戶資料表(customer),以及紀錄訂購的資料表,因為order是保留字,所以我們用order_main當訂購的表頭檔,用order_body當訂購的表身檔。 為何紀錄訂購資料需要訂購的表頭檔跟訂購的表身檔呢? 要知道某個時間區間內,哪個客戶購買金額最大?最少? 需要客戶資料表(customer)、order_main 與 order_body。 某個時間區間內,哪個客戶購買金額最大?最少? --> 從客戶資料表+訂購的表頭檔+訂購的表身檔,找到加總訂購金額最大( 最少 )的客戶名稱,條件是訂購資料在特定時間區間內。 (4) 老闆想知道目前總共還有多少應收款? 應收款最多的是哪個客戶? 思考 : 從這個需求知道,訂購的價錢需要紀錄已付或是未付,這個可以用一個欄位來表示,你可以…
在MySQL中,把Procedure和Function統稱為Routine,我們會把常用的程序用Stored Procedure或是Stored Function來表示,需要的時候就可以重複呼叫。 Stored Procedure(預儲程序):把一連串的SQL程序步驟儲存起來,最後透過 『call 預儲程序名稱;』來呼叫。 Stored Function(預儲函數):或稱為使用者定義函數,跟預儲程序很像,不過最後會傳回值。呼叫方式不是 call,而是Select,例如:『select 預儲函數名稱(引數值);』或『select 預儲函數名稱();』。 MySQL 正式支援觸發器(trigger)是在 MySQL 5.0.2 的版本之後。觸發器是註冊在資料庫表格上的程式。所以在事件發生(對資料列做新增/修改/刪除)時,資料庫會依照觸發條件(事件前/事件後)幫你執行預先儲存好的程式。 現在來看看一個實際需求的案例 ~ 資料表格式如下 Student(sid, idno, sname, did, syear, sclass) OpenCourse(oid, cid, tid, yearlimit, roomno, tot) Schedule(oid, ti…
MySQL使用者權限資訊用user、db、host、tables_priv和columns_priv表被儲存在mysql資料庫中。 關於使用者權限的相關指令,說明如下 (1)使用 root 進入 MySQL mysql> mysql -u root -p (2)遠端登入 mysql> mysql -u root -h remote_host_ip -p remote_host_ip 指你要登入的遠端MySQL (3)修改使用者密碼 mysql> SET PASSWORD FOR '目標使用者'@'主機' = PASSWORD(' 密碼 '); mysql> flush privileges; (4)建立使用者,並給予權限 grant usage on *.* to 'username'@'localhost' identified by ' yourpassword ' with grant option; grant all privileges on *.* to 'username'@&…
MySQL資料庫中,View元件可以用來保存一段你指定的查詢敘述。 MySQL View的實作請參考 https://www.mysql.tw/2023/05/mysql-view.html (1)CREATE VIEW語法 CREATE [ OR REPLACE ] [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE } ] [ DEFINER = { user | CURRENT_USER } ] [ SQL SECURITY { DEFINER | INVOKER } ] VIEW view_name [ ( column_list ) ] AS select_statement [ WITH [ CASCADED | LOCAL ] CHECK OPTION ] https://dev.mysql.com/doc/refman/8.0/en/create-view.html 範例 mysql> CREATE TABLE t (qty INT, price INT); mysql>…