oop - PHP CURD類操作資料庫方式(PDO_MYSQL/MySQLi)

來源:互聯網
上載者:User
關鍵字 php curd oop mysql 資料庫開發
PHP使用pdo_mysql/mysqli的預先處理(prepare)方法,已經封裝成類,使用數組的方式把參數綁定再執行。
但是資料表比較多時,如果把每個資料表的CURD操作都寫成獨立的函數就太麻煩了,那樣的話檔案也多,以後維護不方便。
如果把CURD封裝成類,就可以方便使用了,比如擷取使用者表、文章表的資料,傳入表名、資料和其他查詢參數再執行即可。
但是這樣不僅沒有了靈活性,而且因為是prepare方式執行的,這樣就要用很多"?"來代替參數然後再綁定,反而不知應該怎樣寫了(主要是select語句)。
比如擷取使用者表的10個註冊使用者:
非prepare方式:

SELECT `username` FROM `users` WHERE `type` = 1 LIMIT 0, 10

如果要把LIMIT換成其他子句,比如ORDER BY這些,直接拼接SQL語句就行了,沒有難度。
但是,下面這種就麻煩了。
prepare方式:

SELECT `?` FROM `?` WHERE `?` = ? LIMIT ?, ?array('username', 'users', 'type', 1, 0, 10)

但是在有些情況下可能就不需要LIMIT。
這樣的話組織CURD的代碼會很麻煩,如果包括子句,比如WORDER BY這些,將會更麻煩。
有沒有簡便或者折中的方法?

補充:我已用ORM解決。

回複內容:

PHP使用pdo_mysql/mysqli的預先處理(prepare)方法,已經封裝成類,使用數組的方式把參數綁定再執行。
但是資料表比較多時,如果把每個資料表的CURD操作都寫成獨立的函數就太麻煩了,那樣的話檔案也多,以後維護不方便。
如果把CURD封裝成類,就可以方便使用了,比如擷取使用者表、文章表的資料,傳入表名、資料和其他查詢參數再執行即可。
但是這樣不僅沒有了靈活性,而且因為是prepare方式執行的,這樣就要用很多"?"來代替參數然後再綁定,反而不知應該怎樣寫了(主要是select語句)。
比如擷取使用者表的10個註冊使用者:
非prepare方式:

SELECT `username` FROM `users` WHERE `type` = 1 LIMIT 0, 10

如果要把LIMIT換成其他子句,比如ORDER BY這些,直接拼接SQL語句就行了,沒有難度。
但是,下面這種就麻煩了。
prepare方式:

SELECT `?` FROM `?` WHERE `?` = ? LIMIT ?, ?array('username', 'users', 'type', 1, 0, 10)

但是在有些情況下可能就不需要LIMIT。
這樣的話組織CURD的代碼會很麻煩,如果包括子句,比如WORDER BY這些,將會更麻煩。
有沒有簡便或者折中的方法?

補充:我已用ORM解決。

SELECT `username` FROM `users` WHERE `type` = ? LIMIT 0, 10array(1)像上面一樣  只設定關鍵字段就行了

curd用單例做抽象封裝,具體到表的資料庫操作封裝成model層,就是mvc的m

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.