0066 使用PHP和MySQL實現學生分數資訊管理

weixin_34234823發表於2018-10-19

上節課介紹了MySQL資料庫中如何使用SQL語言查詢和變更資料。

這節課來介紹如何通過PHP呼叫SQL語句實現資料管理功能網頁。

通過PHP呼叫SQL語句連線到資料庫

前面教程當中通過PHP程式語言來讀寫資料文字檔案的方式,實現了一個學生分數資訊管理功能。

可以實現一覽查詢,新增,編輯和刪除功能。

通過讀寫資料檔案的方式有很多侷限性,最好的方式是通過PHP程式語言來呼叫SQL語句,從而將資料的查詢和變更都通過資料庫來實現。

首先要實現通過PHP程式語言連線到資料庫,然後才能呼叫相應的SQL語句來訪問和變更資料。

開啟之前編寫過的studentlist_do.php檔案,修改為如下程式碼:

4239845-575a0f181bacf89f
image

其中最重要的下面2句程式碼:

/連線資料庫伺服器/

dbserver,dbpassword) or die('資料庫連線錯誤!');

/開啟資料庫/

mysql_select_db(dbh);

前面一句是呼叫mysql_connect函式,傳遞的引數是:資料庫伺服器地址,資料庫使用者名稱,資料庫密碼。

後面的or die是當mysql_connect如果呼叫成功,則返回true則後面的or die不會執行。

如果mysql_connect呼叫不成功,比如伺服器地址錯誤或者密碼錯誤等,則or die會繼續執行;

die這個函式的作用就是結束整個php網頁的繼續執行,將"資料庫連線錯誤"這個字串返回到瀏覽器顯示出來。

後面一句mysql_select_db函式的作用是連線到具體的資料庫,例如這裡就是之前建立好的資料庫student。

由於上節課,學哥的資料庫是安裝在Window7裡面的phpStudy環境中,因此將student的這些php檔案都部署到了phpStudy環境裡面,訪問網頁地址:localhost/studentlist.php:

4239845-bce77eb3f1ba0044
image

發現看到的結果和之前學哥將php檔案部署在ubuntu作業系統下面顯示的結果不一樣。

網頁中顯示了很多Notice和Warning。

關閉PHP錯誤提示

由於PHP可以顯示很多錯誤提示來幫助開發者更好的除錯程式碼,而PHP錯誤提示有很多個級別,是可以通過配置檔案進行設定的。

1種方法是修改PHP目錄裡面的php.ini配置檔案設定相應的錯誤提示級別。

第2種方法可以在PHP程式碼中臨時設定當前這個php檔案的錯誤提示級別。

下面我們使用第2種方法來將Notice提示和Warning提示關閉,不顯示到網頁中。

studentlist_do.php檔案修改如下:

4239845-1f928d6c5ad6c77a
image

重新整理網頁:

4239845-4408dbe587f3aae3
image

可以看到之前的錯誤提示資訊都不見了。

為何之前學哥在ubuntu系統下部署執行php程式沒有這個問題呢,這是因為ubutnu系統裡面的php和Window7下面的phpStudy的php的配置不一樣。

一般來說作為程式設計者知道此問題即可,知道如何開啟和關閉錯誤提示即可。需要除錯程式碼時開啟,正式執行時關閉。

使用PHP呼叫SQL語句查詢一覽資料

接下來就可以使用已經連線好的資料庫來將一覽頁面的資料從資料庫種查詢出來並顯示,就不再需要讀取studentdatas.txt檔案了。

studentlist_do.php檔案修改如下:

4239845-357703c054292069
image

重新整理網頁,然後點選查詢按鈕:

4239845-7e1c93e3a7c03269
image

可以看到顯示了2條資料。可以通過資料庫客戶端軟體開啟資料庫,開啟表,確認確實是存在這2條資料記錄。

4239845-e09b8c23449d8c3e.jpg
4-12-7.jpg

關鍵的程式碼如下:

$query="select * from studentscore";

這一句是定義一個查詢的SQL語句,這裡是不帶檢索條件查詢出表studentscore裡的所有記錄。

query,$dbh);

這一句是通過mysql_query執行一句SQL語句,第二個引數$dbh就是前面通過mysql_connect函式返回的資料庫連線例項變數。

while(result)){

這一句是將查詢的結果record。

record->id;

這一句就可以通過訪問$record變數陣列的鍵來獲得一條記錄的某個欄位的資料值。

注意這裡的id要和資料庫的欄位名完全匹配上。

其它的輔助程式碼就是將讀取的表記錄的欄位資料值存放到二維陣列變數$alldatas當中,和之前的定義一致,這樣後面的程式碼就不需要修改了。

使用where的SQL語句實現條件查詢

之前要實現條件查詢,如果讀取資料檔案方式,只能自己通過寫PHP程式碼進行資料過濾篩選的方式,有了SQL語句之後,就簡單了。

可以通過根據傳遞的條件進行判斷,生成相應的SQL語句來進行資料庫查詢,獲得滿足條件的資料記錄結果集。

如果要實現姓名的模糊查詢,對應的SQL語句是這樣的:

select * from studentscore where name like '%張%';

那麼就要根據傳遞過來的姓名條件引數,將where後面的這串字串拼裝好,拼接到$query變數中。

studentlist_do.php檔案修改如下:

4239845-80edf8ba070d188f
image

重新整理網頁,然後在姓名條件輸入“張”,然後點選查詢按鈕:

4239845-6c00142c6670aac0
image

可以看到顯示了1條滿足條件的資料。同時可以看到具體的SQL語句顯示在網頁上,這是為了除錯用,全部程式碼完成之後再註釋掉。

接下來,實現其它3個查詢條件,注意多個查詢條件之間要用and進行連線。

studentlist_do.php檔案修改如下:

4239845-f5a4d1442b545d09
image

[圖片上傳失敗...(image-4783ac-1539918280654)]

4239845-41b14ea9bd90de30
image

重新整理網頁,然後在姓名條件輸入“張”,性別選擇“男”,分數段選擇“75-90”,科目勾選“語文”和“數學”,然後點選查詢按鈕:

4239845-462eb8b47aa0ff41.jpg
4-12-12.jpg

可以看到顯示了1條滿足條件的資料。同時可以通過檢視SQL語句判斷程式邏輯是否正確的拼裝好了SQL語句。

如果將檢索條件分數段選擇修改為“90分以上”,點選查詢按鈕後會看到沒有檢索到資料。

可以將這段除錯用的SQL語句複製貼上到資料庫客戶端軟體裡面去執行,同樣也查詢不到資料。

由於很多程式碼都沒有用了,因此可以將註釋的程式碼全部刪除進行精簡,同時將除錯語句註釋掉。

studentlist_do.php檔案修改後完整程式碼如下:

4239845-736d3c5540432788
image
4239845-5e6e0b90433d518a.jpg
4-12-14.jpg

通過PHP呼叫SQL語句新增一條記錄

接下來,將新增一個記錄的程式碼也修改為呼叫SQL語句插入記錄到資料庫,而不再寫入到studentdatas.txt檔案。

studentcreate_do.php檔案修改完整程式碼如下:

4239845-31a4bdf2fab5c503
image
4239845-9ce229f9b0e543c3.jpg
4-12-16.jpg

其中關鍵性的程式碼是呼叫函式mysql_query執行一句SQL語句,然後根據返回值判斷是否成功執行。

另外需要說明的是getMaxId自定義函式用於查詢資料庫表,得到某個表的某個欄位的最大的值,返回值加1。

它的作用在這裡就是用於取得studentscore表的最大的ID的值,然後加1返回。這樣插入資料庫的時候ID就不會重複了。

由於getMaxId具有共通性,所以將它做成一個函式,未來可以將這個函式獨立放到某個共通檔案,可以在多個php檔案中去引用。

開啟一覽頁面,點選查詢按鈕:

4239845-d9f68a1bbf3bbc21
image

可以看到目前總共2條記錄,點選連結“新建學生分數資訊”,進入新建頁面:

4239845-57303123ad1a46de
image

姓名輸入“段譽”,性別選擇“男”,科目選擇“英語”,分數輸入“99”,點選“儲存”按鈕:

4239845-1914292a36eca0d3.jpg
4-12-19.jpg

看到顯示了提示資訊“建立資料成功”,並且可以看到除錯用的SQL語句,可以檢視SQL語句是否正確。

點選“確定”按鈕,然後關閉此視窗。

回到一覽頁面,點選“查詢”按鈕:

4239845-44080371e1d58bfa
image

可以看到了新增到資料庫的記錄被查詢出來了。

通過PHP呼叫SQL語句修改和刪除一條記錄

接下來,將修改和刪除一個記錄的程式碼也修改為呼叫SQL語句插入記錄到資料庫,而不再寫入到studentdatas.txt檔案。

studentedit_do.php檔案修改完整程式碼如下:

4239845-ddb5990b39715e8f.jpg
4-12-21.jpg
4239845-636f8c605e17f9d5
image

開啟一覽頁面,點選查詢按鈕:

4239845-5c57b263139399d1.jpg
4-12-23.jpg

可以看到目前總共3條記錄,點選連結“段譽”,進入編輯頁面:

4239845-916aae5b2815eadd
image

姓名修改為“王語嫣”,性別選擇“女”,科目選擇“音樂”,分數輸入“96”:

4239845-33ccf4be5a5b6549.jpg
4-12-25.jpg

點選“儲存”按鈕:

4239845-82383f2200eb736f
image

看到顯示了提示資訊“編輯資料成功”,並且可以看到除錯用的SQL語句,可以檢視SQL語句是否正確。

點選“確定”按鈕,然後關閉此視窗。

回到一覽頁面,點選“查詢”按鈕:

4239845-64f3c7e91b042aeb.jpg
4-12-27.jpg

可以看到了第3條記錄的資料被修改好並查詢出來了。

點選連結“王語嫣”,進入編輯頁面:

4239845-5d2bbabe4f5becd8
image

點選“刪除”按鈕:

4239845-859a6611db56f1cc.jpg
4-12-29.jpg

確認頁面點選“確定”:

4239845-ea800942bcdb0295
image

看到顯示了提示資訊“刪除資料成功”,並且可以看到除錯用的SQL語句,可以檢視SQL語句是否正確。

點選“確定”按鈕,然後關閉此視窗。

回到一覽頁面,點選“查詢”按鈕:

4239845-060d0d9f395200f4
image

可以看到了第3條記錄不見了。

此時,可以到資料庫客戶端軟體中開啟表studentscore檢視資料,確認確實資料記錄被刪除了。

相關文章