當前位置:
首頁 > 最新 > php特性與mysqli融合鑄造資料庫插入之劍

php特性與mysqli融合鑄造資料庫插入之劍

自上次新手村外白如意被mysql狠狠教訓,內心一想起資料庫竟有點發怵。只聽信無望山php掌門之意,潛心修鍊內功心法,數日後頓悟原力。

——《編程話江湖,原力鑄神兵》

php5.6引入前置... 操作符,使得函數參數個數具有彈性

mysql4.1引入預處理語句,為執行做好準備,帶來了佔位符?,也能有效防止SQL注入攻擊。現在有一個Student表,在數據中查看錶結構

主鍵為id整型自動+1,其中姓名name 和級別grade為字元串類型。讓我們看看插入語句的寫法

注意,欄位個數增加,相應的參數也在增加,後面將運用這一點

php通過mysqli擴展實現預處理語句,也是執行插入語句

用?進行了預處理語句佔了坑,後面需要綁定相應的數據,並在這之前指明數據類型,php支持提供i、d、s、b四種對應參數類型,這四個類型是從php的角度看待的

當我們需要插入需要增加一個age,上方的代碼必須人為修改

當插入欄位有多少,代碼就會有多長。

很快,白如易從中發現了要害——

白如易悟到,對於任何一張邪惡的mysql數據表,它的表欄位和結構可以認為是不變的。當我們插入數據時,只須數據表已存在欄位相同則切中要害,欄位變則參數變,欄位長則參數長,步調一致,萬變不離其宗。

總體脈絡

第一步,獲取資料庫操作句柄變數

php中的mysqli擴展提供連接資料庫功能,有面向過程和面向對象兩種寫法,更推薦使用面向對象的寫法,變數自定義命名為$mysqli

第二步,創建添加方法

自定義名稱為add。根據輸入數據,從中獲取能夠進入資料庫的有效數據,並且根據有效數據為其組織相應的參數類型列表、和組裝預處理SQL。

其中,$dataArr 數組包含三個元素:

獲取上面三個元素的函數我們命名為filterFromTable()。這個函數肩負起上方所有的職責,首先要獲取資料庫表欄位列表和其i、d、s、b類型,接著循環資料庫列表欄位或插入數據,比對找出其中登記在庫的參數重組數據,並且在循環時可順便拼接 好SQL語句的欄位列表和問號列表

其中,fieldTypeArr()用來獲取資料庫欄位對應i、d、s、b類型,需要根據mysql欄位類型做一個轉換,該函數返回內容為

上述函數根據mysql欄位類型,轉換為i、d、s、b類型用到的自定義函數oneFieldType

第三步,測試

以Student表為例引入myDB.class.php類,將適用於任何錶的插入操作

執行過程的中間返回值

函數調用關係

完整的代碼

包括注釋和輔助函數,共計107行

這就實現了插入操作,其他資料庫操作應該可以舉一反三

一門語言的原力來源於自身,這樣代碼可能會有靈魂

少俠有緣再見還請留贊


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 編程夜未眠 的精彩文章:

網站編程語言PHP5.6特性回顧

TAG:編程夜未眠 |