Rumah > pembangunan bahagian belakang > tutorial php > oop - PHP CURD类操作数据库方式(PDO_MYSQL/MySQLi)

oop - PHP CURD类操作数据库方式(PDO_MYSQL/MySQLi)

WBOY
Lepaskan: 2016-06-06 20:07:13
asal
1085 orang telah melayarinya

PHP使用pdo_mysql/mysqli的预处理(prepare)方法,已经封装成类,使用数组的方式把参数绑定再执行。
但是数据表比较多时,如果把每个数据表的CURD操作都写成独立的函数就太麻烦了,那样的话文件也多,以后维护不方便。
如果把CURD封装成类,就可以方便使用了,比如获取用户表、文章表的数据,传入表名、数据和其他查询参数再执行即可。
但是这样不仅没有了灵活性,而且因为是prepare方式执行的,这样就要用很多"?"来代替参数然后再绑定,反而不知应该怎样写了(主要是select语句)。
比如获取用户表的10个注册用户:
非prepare方式:

<code>SELECT `username` FROM `users` WHERE `type` = 1 LIMIT 0, 10</code>
Salin selepas log masuk
Salin selepas log masuk

如果要把LIMIT换成其他子句,比如ORDER BY这些,直接拼接SQL语句就行了,没有难度。
但是,下面这种就麻烦了。
prepare方式:

<code>SELECT `?` FROM `?` WHERE `?` = ? LIMIT ?, ?
array('username', 'users', 'type', 1, 0, 10)</code>
Salin selepas log masuk
Salin selepas log masuk

但是在有些情况下可能就不需要LIMIT。
这样的话组织CURD的代码会很麻烦,如果包括子句,比如WORDER BY这些,将会更麻烦。
有没有简便或者折中的方法?

补充:我已用ORM解决。

回复内容:

PHP使用pdo_mysql/mysqli的预处理(prepare)方法,已经封装成类,使用数组的方式把参数绑定再执行。
但是数据表比较多时,如果把每个数据表的CURD操作都写成独立的函数就太麻烦了,那样的话文件也多,以后维护不方便。
如果把CURD封装成类,就可以方便使用了,比如获取用户表、文章表的数据,传入表名、数据和其他查询参数再执行即可。
但是这样不仅没有了灵活性,而且因为是prepare方式执行的,这样就要用很多"?"来代替参数然后再绑定,反而不知应该怎样写了(主要是select语句)。
比如获取用户表的10个注册用户:
非prepare方式:

<code>SELECT `username` FROM `users` WHERE `type` = 1 LIMIT 0, 10</code>
Salin selepas log masuk
Salin selepas log masuk

如果要把LIMIT换成其他子句,比如ORDER BY这些,直接拼接SQL语句就行了,没有难度。
但是,下面这种就麻烦了。
prepare方式:

<code>SELECT `?` FROM `?` WHERE `?` = ? LIMIT ?, ?
array('username', 'users', 'type', 1, 0, 10)</code>
Salin selepas log masuk
Salin selepas log masuk

但是在有些情况下可能就不需要LIMIT。
这样的话组织CURD的代码会很麻烦,如果包括子句,比如WORDER BY这些,将会更麻烦。
有没有简便或者折中的方法?

补充:我已用ORM解决。

<code>SELECT `username` FROM `users` WHERE `type` = ? LIMIT 0, 10
array(1)
像上面一样  只设置关键字段就行了</code>
Salin selepas log masuk

curd用单例做抽象封装,具体到表的数据库操作封装成model层,就是mvc的m

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan