编写 PHP 代码,无需 OOP 或 PDO 即可同时支持 MySQL 和 PostgreSQL

Write PHP code support both MySQL and PostgreSQL without OOP or PDO

提问人:Someone1611 提问时间:7/6/2023 更新时间:7/6/2023 访问量:99

问:

我想用PHP写一个简单的论坛网站,可以配置为使用MySQL或PostgreSQL。目前有PDO,但我不知道OOP,也不想学它。我有一个关于函数的想法,该函数对服务器软件进行争论,并使用 mysqli 或 pgsql 扩展。例如:

function db_connect($mysql = null, $hostname, $username, $password, $database, $software) 
{
  switch ($software) 
  {
  case "mysql":
    return mysqli_real_connect($mysql, $hostname, $username, $password, $database);
  case "pgsql":
    return pgsql_connect("host=$hostname, port=5432, dbname=$database, user=$username, password=$password");
  }
}

这是个好主意吗?目前我还不需要太多功能就可以工作。

php mysqli php-pgsql

评论

6赞 nice_dev 7/6/2023
我不想学它学习是 IT 行业唯一不变的事情。
2赞 Sammitch 7/6/2023
不愿意学习东西几乎在任何行业都是一个破坏者,tbh。我曾经遇到过的所有最糟糕的同事都是那种在 5+ 年前已经学会了“他们需要知道的一切”,然后在专业和个人方面都停滞不前的人。
2赞 ADyson 7/6/2023
OO 是许多现代行业标准编程语言的基础。抓住机会。从长远来看,它会让你的生活更轻松,因为你编写的代码,如果你做得不错,会更容易理解、测试、维护和重用
1赞 Álvaro González 7/6/2023
它将起作用,对于某些定义起作用。从本质上讲,您将构建两个完全不同的应用程序引擎,每个引擎都有自己的连接、SQL 等。但它们将完全交错。您将用学习时间换取维护时间。

答:

3赞 Sammitch 7/6/2023 #1

不,那行不通。如果你真的尝试过那个代码,你就会知道。

这是因为 mysqlipgsql 具有截然不同的库 API,并且几乎没有共享函数调用。即使您确实使用 PDO 作为通用数据库 API,您仍然会遇到大多数查询在两者之间不兼容的问题。PDO 的重点不是您可以对任何后端使用一个查询,而是让您不必在每次需要使用不同的数据库后端时都学习不同的数据库库 API 和工作流。

如果您希望拥有一个支持不同数据库后端的应用程序,那么您需要在应用程序和数据库之间建立一个抽象层来处理每个数据库的查询语法和特性。许多框架为此使用 ORM 或类似技术。