php - 编写我自己的 MySQL 库?这是不是一个好主意?

标签 php mysql mysqli

更新:感谢大家的帮助,我决定尝试编写自己的 PHP 类来处理 MySQL 请求。

当我尝试从 mysql_ 切换到 mysqli_ 函数时,我现在遇到了一个问题,因为我有数以万计的PHP/MySQL 代码行和查询分散在数百个文件中,它们都使用诸如 mysql_querymysql_num_rowsmysql_fetch_assoc 等函数,等等。逐行(甚至使用查找/替换)将这些更改为带有准备好的语句的 mysqli_ 函数,这一切都够痛苦了,但是如果将来 PHP.net 决定发布其他内容怎么办这会弃用 mysqli_ 函数吗?

所以现在我正在考虑编写我自己的 MySQL 库(你会这样调用它吗?)调用 mysqli_ 函数并将其包含在我的所有文件中。这样,如果我将来需要更改其他内容,理论上我可以在我的“库”中更改一次功能,更改将反射(reflect)在所有页面上,而不是手动检查并手动更改所有内容。

这是个好主意吗?我在网上找到了一个叫做 MeekroDB 的东西,但首先我不确定这是否是我正在寻找的东西,其次他们收取 50 美元用于商业用途(我想这样做。)是否有其他免费解决方案,或者我只是浪费我的时间?

欢迎任何评论/反馈:)

编辑:如果不清楚的话,并不是说我在查询数据库的每个文件中都连接到我的数据库。我有一个 functions.php 文件,我用它来连接到 MySQL 数据库,并且我在所有其他文件中 include 该文件。我的问题更多地与 mysql_querymysql_num_rowsmysql_fetch_assoc 等函数相关。

最佳答案

通过查看您对 MeekroDB 的引用链接,我认为您编写的不是像 mysql_*/mysqli_* 这样的 MySQL API 方法。

您实际上想要编写的是一个数据库抽象层,尽管它特定于 MySQL。

事实是,除非您要编写自己的底层模块来与 MySQL 进行通信(当然,您也可以用 PHP 来困难),否则您可能会最终还是使用 mysqli_ 方法作为支持。

有很多这样的层可用,但老实说,我会考虑使用 PDO 而不是自己编写,或者如果您担心功能被弃用,则使用 mysqli_*。 PDO 使用自己的 MySQL 驱动程序,因此会在需要时进行更新。它还支持您需要的所有功能,包括易于使用的交易、准备好的报表等等。

如果您想创建自己的易于访问的方法,例如 DB::Query(..),您可以通过包装 PDO 来实现。

不过,总的来说,我看不出这对组织代码有何帮助。您可能会想要查看数据库的 ORM(对象关系映射器)之类的东西,您可以在其中定义自己的直接映射到表中的类,除了边缘情况外,这应该几乎完全减轻运行查询的需要.可用的最全面的 ORM 可能是 Doctrine ,尽管您可以很容易地再次编写自己的代码,包装 PDO。

作为使用 ORM 可以实现的示例,这里有一段代码来演示:

$blogPost = BlogPosts::Load(123);
$blogPost->title = 'New Title';
$blogPost->save();

关于php - 编写我自己的 MySQL 库?这是不是一个好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14426777/

相关文章:

PHP 用其他语言打印日期变量

php - 我如何使用 PHP 根据来自两个不同表的表数据生成 HTML 表单?

mysql - GROUP BY(MySQL 与 SQL 服务器)

javascript - 在选择 mysqli 请求行下拉选项上填充表单字段

php - 将所有发布数据插入 MySQL 数据库

php - 图像未从 tmp 目录移动到 linux 服务器中的另一个文件夹

php - 将多个文本框中的值与 mysql 表进行比较

php - 使用jquery设置php页面参数并在参数中添加值时出现问题

php - 如何使用特定条件加入 codeigniter 中的列

php - MySql 查询 - 慢速服务器