0066 使用PHP和MySQL實現學生分數資訊管理
上節課介紹了MySQL資料庫中如何使用SQL語言查詢和變更資料。
這節課來介紹如何通過PHP呼叫SQL語句實現資料管理功能網頁。
通過PHP呼叫SQL語句連線到資料庫
前面教程當中通過PHP程式語言來讀寫資料文字檔案的方式,實現了一個學生分數資訊管理功能。
可以實現一覽查詢,新增,編輯和刪除功能。
通過讀寫資料檔案的方式有很多侷限性,最好的方式是通過PHP程式語言來呼叫SQL語句,從而將資料的查詢和變更都通過資料庫來實現。
首先要實現通過PHP程式語言連線到資料庫,然後才能呼叫相應的SQL語句來訪問和變更資料。
開啟之前編寫過的studentlist_do.php檔案,修改為如下程式碼:
其中最重要的下面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:
發現看到的結果和之前學哥將php檔案部署在ubuntu作業系統下面顯示的結果不一樣。
網頁中顯示了很多Notice和Warning。
關閉PHP錯誤提示
由於PHP可以顯示很多錯誤提示來幫助開發者更好的除錯程式碼,而PHP錯誤提示有很多個級別,是可以通過配置檔案進行設定的。
1種方法是修改PHP目錄裡面的php.ini配置檔案設定相應的錯誤提示級別。
第2種方法可以在PHP程式碼中臨時設定當前這個php檔案的錯誤提示級別。
下面我們使用第2種方法來將Notice提示和Warning提示關閉,不顯示到網頁中。
studentlist_do.php檔案修改如下:
重新整理網頁:
可以看到之前的錯誤提示資訊都不見了。
為何之前學哥在ubuntu系統下部署執行php程式沒有這個問題呢,這是因為ubutnu系統裡面的php和Window7下面的phpStudy的php的配置不一樣。
一般來說作為程式設計者知道此問題即可,知道如何開啟和關閉錯誤提示即可。需要除錯程式碼時開啟,正式執行時關閉。
使用PHP呼叫SQL語句查詢一覽資料
接下來就可以使用已經連線好的資料庫來將一覽頁面的資料從資料庫種查詢出來並顯示,就不再需要讀取studentdatas.txt檔案了。
studentlist_do.php檔案修改如下:
重新整理網頁,然後點選查詢按鈕:
可以看到顯示了2條資料。可以通過資料庫客戶端軟體開啟資料庫,開啟表,確認確實是存在這2條資料記錄。
關鍵的程式碼如下:
$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檔案修改如下:
重新整理網頁,然後在姓名條件輸入“張”,然後點選查詢按鈕:
可以看到顯示了1條滿足條件的資料。同時可以看到具體的SQL語句顯示在網頁上,這是為了除錯用,全部程式碼完成之後再註釋掉。
接下來,實現其它3個查詢條件,注意多個查詢條件之間要用and進行連線。
studentlist_do.php檔案修改如下:
[圖片上傳失敗...(image-4783ac-1539918280654)]
重新整理網頁,然後在姓名條件輸入“張”,性別選擇“男”,分數段選擇“75-90”,科目勾選“語文”和“數學”,然後點選查詢按鈕:
可以看到顯示了1條滿足條件的資料。同時可以通過檢視SQL語句判斷程式邏輯是否正確的拼裝好了SQL語句。
如果將檢索條件分數段選擇修改為“90分以上”,點選查詢按鈕後會看到沒有檢索到資料。
可以將這段除錯用的SQL語句複製貼上到資料庫客戶端軟體裡面去執行,同樣也查詢不到資料。
由於很多程式碼都沒有用了,因此可以將註釋的程式碼全部刪除進行精簡,同時將除錯語句註釋掉。
studentlist_do.php檔案修改後完整程式碼如下:
通過PHP呼叫SQL語句新增一條記錄
接下來,將新增一個記錄的程式碼也修改為呼叫SQL語句插入記錄到資料庫,而不再寫入到studentdatas.txt檔案。
studentcreate_do.php檔案修改完整程式碼如下:
其中關鍵性的程式碼是呼叫函式mysql_query執行一句SQL語句,然後根據返回值判斷是否成功執行。
另外需要說明的是getMaxId自定義函式用於查詢資料庫表,得到某個表的某個欄位的最大的值,返回值加1。
它的作用在這裡就是用於取得studentscore表的最大的ID的值,然後加1返回。這樣插入資料庫的時候ID就不會重複了。
由於getMaxId具有共通性,所以將它做成一個函式,未來可以將這個函式獨立放到某個共通檔案,可以在多個php檔案中去引用。
開啟一覽頁面,點選查詢按鈕:
可以看到目前總共2條記錄,點選連結“新建學生分數資訊”,進入新建頁面:
姓名輸入“段譽”,性別選擇“男”,科目選擇“英語”,分數輸入“99”,點選“儲存”按鈕:
看到顯示了提示資訊“建立資料成功”,並且可以看到除錯用的SQL語句,可以檢視SQL語句是否正確。
點選“確定”按鈕,然後關閉此視窗。
回到一覽頁面,點選“查詢”按鈕:
可以看到了新增到資料庫的記錄被查詢出來了。
通過PHP呼叫SQL語句修改和刪除一條記錄
接下來,將修改和刪除一個記錄的程式碼也修改為呼叫SQL語句插入記錄到資料庫,而不再寫入到studentdatas.txt檔案。
studentedit_do.php檔案修改完整程式碼如下:
開啟一覽頁面,點選查詢按鈕:
可以看到目前總共3條記錄,點選連結“段譽”,進入編輯頁面:
姓名修改為“王語嫣”,性別選擇“女”,科目選擇“音樂”,分數輸入“96”:
點選“儲存”按鈕:
看到顯示了提示資訊“編輯資料成功”,並且可以看到除錯用的SQL語句,可以檢視SQL語句是否正確。
點選“確定”按鈕,然後關閉此視窗。
回到一覽頁面,點選“查詢”按鈕:
可以看到了第3條記錄的資料被修改好並查詢出來了。
點選連結“王語嫣”,進入編輯頁面:
點選“刪除”按鈕:
確認頁面點選“確定”:
看到顯示了提示資訊“刪除資料成功”,並且可以看到除錯用的SQL語句,可以檢視SQL語句是否正確。
點選“確定”按鈕,然後關閉此視窗。
回到一覽頁面,點選“查詢”按鈕:
可以看到了第3條記錄不見了。
此時,可以到資料庫客戶端軟體中開啟表studentscore檢視資料,確認確實資料記錄被刪除了。
相關文章
- 基於php學生資訊管理系統PHP
- MySQL全面瓦解23:MySQL索引實現和使用MySql索引
- PHP 連線 MySQL 資料庫 - 手把手教你搭建學生資訊管理頁,MySQL blob 儲存圖片PHPMySql資料庫
- python實現學生資訊管理系統(從淺到深)Python
- 教你如何運用python實現學生資訊管理系統Python
- 創新實訓(八)使用者管理和系統資訊
- 淺談php變數的實現-PHPPHP變數
- 0066
- PHP配上MySQL實現批量更新插入PHPMySql
- python mysql實現學生成績管理系統蠖脲PythonMySql
- 口罩預約管理系統——系統網站實現(前端+PHP+MySQL)網站前端PHPMySql
- python中如何實現資訊增益和資訊增益率Python
- php實現ffmpeg處理視訊PHP
- 自學PHP筆記(四) PHP變數和常量PHP筆記變數
- 自學PHP筆記(四) PHP常量和變數PHP筆記變數
- mysql和redis實時同步資料怎麼實現MySqlRedis
- 國內實驗室資訊化管理現狀
- PHP 使用 Redis 實現分頁PHPRedis
- 『現學現忘』Docker基礎 — 31、實現MySQL同步資料DockerMySql
- 使用Java和Consul實現服務配置管理Java
- MySQL中union和order by同時使用的實現方法MySql
- 聊聊 AI 學習入門 - 數學和資訊理論AI
- 使用PHP實現字串的上標和下標,比如:M²和Log₂FCPHP字串
- 以資訊科技推動建築工程行業實現資訊化管理行業
- Vue-SSR: head Mixin 實現頭部資訊管理Vue
- 就業資訊管理系統設計與實現就業
- [譯]使用 JavaScript 和網路資訊 API 實現自適應服務JavaScriptAPI
- PHP實現url重寫和.htaccessPHP
- 醫學實驗室資訊管理系統原始碼原始碼
- 使用者管理實現
- 使用vue3.0和element實現後臺管理模板Vue
- 每天一個 PHP 語法-變數使用及內部實現PHP變數
- 詳解MYSQL的備份還原(PHP實現)MySqlPHP
- Python中使用共享變數+訊號量實現程序間的實時通訊Python變數
- 使用EF 連線 資料庫 SQLserver、MySql 實現 CodeFirst資料庫ServerMySql
- MySQL-03.使用者管理和許可權管理MySql
- 原生 PHP 實現支付寶 App 第三方登入獲取 使用者資訊PHPAPP
- 基於jsp學生資訊管理系統的設計與實現(含原始檔)JS