更新:感谢大家的帮助,我决定尝试编写自己的 PHP 类来处理 MySQL 请求。
当我尝试从 mysql_
切换到 mysqli_
函数时,我现在遇到了一个问题,因为我有数以万计的PHP/MySQL 代码行和查询分散在数百个文件中,它们都使用诸如 mysql_query
、mysql_num_rows
、mysql_fetch_assoc
等函数,等等。逐行(甚至使用查找/替换)将这些更改为带有准备好的语句的 mysqli_
函数,这一切都够痛苦了,但是如果将来 PHP.net 决定发布其他内容怎么办这会弃用 mysqli_
函数吗?
所以现在我正在考虑编写我自己的 MySQL 库(你会这样调用它吗?)调用 mysqli_
函数并将其包含在我的所有文件中。这样,如果我将来需要更改其他内容,理论上我可以在我的“库”中更改一次功能,更改将反射(reflect)在所有页面上,而不是手动检查并手动更改所有内容。
这是个好主意吗?我在网上找到了一个叫做 MeekroDB 的东西,但首先我不确定这是否是我正在寻找的东西,其次他们收取 50 美元用于商业用途(我想这样做。)是否有其他免费解决方案,或者我只是浪费我的时间?
欢迎任何评论/反馈:)
编辑:如果不清楚的话,并不是说我在查询数据库的每个文件中都连接到我的数据库。我有一个 functions.php 文件,我用它来连接到 MySQL 数据库,并且我在所有其他文件中 include
该文件。我的问题更多地与 mysql_query
、mysql_num_rows
和 mysql_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/