php - 为什么我们把 mysql 写在 $conn = new pdo(); 中如果 PDO 与平台无关

标签 php mysql mysqli pdo

在 PHP PDO(PHP 数据对象)教程中,我读到 PDO 相对于 MySQLi 的优势在于 PDO 是平台无关的。这意味着您使用 MySQL 数据库管理系统使用 PHP PDO 编写了一个脚本。稍后您想要将 Web 应用程序切换到另一个数据库管理系统(例如 Oracle),您将不需要重写查询。而对于 MySQLi,您必须重写查询。

现在我对下面的行感到困惑

$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);

为什么我们需要在第一个参数中提及“mysql”?如果我必须将我的网站移植到另一个 DBMS,我是否不需要用 “oracle” 之类的东西替换这个“mysql”?

希望有人能澄清这一点。

谢谢

最佳答案

这实际上是一个很好的问题,不知道为什么它被如此强烈地否决。

Later you want to switch your web application to another Database Management System like Oracle, you will not need to rewrite your queries.

不幸的是,这只是一个令人讨厌的谣言。事实上,您还必须重写许多查询。 PDO 只是一个Database Access Abstraction layer ,意味着它提供了统一的API来访问不同的数据库,但它不会根据不同的SQL风格为您重写SQL查询。

Why do we need to mention the "mysql" in the first parameter?

好吧,即使对于您想象的 PDO,您也必须以某种方式告诉要使用哪个驱动程序。对于实际的 PDO 也是如此。确实,一台自动售货机可以为您提供百事可乐或可口可乐,但它无法读取思想,您必须指定它是什么。

所以是的 - 您必须指定要连接的数据库重写您的查询。

the advantage of PDO over MySQLi

这是最微不足道的优势 - 实际上有 much more .

关于php - 为什么我们把 mysql 写在 $conn = new pdo(); 中如果 PDO 与平台无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42783774/

相关文章:

php - 在 laravel 中上传文件

php - 如何在 MySQL 存储过程中计算这些日期差、乘法?

mysql - 如何匹配连接表和相关表中的列名和值?

php - 使用 PHP 运行 .sql 文件

php - 每个结果的百分比,其中 id = id

php - 删除表格条目的按钮

php - 唯一约束返回类型不匹配

php - 使用 php 选择查询内的 Sql 更新查询

mysql - 为什么Asterisk中的自定义话单字段在MySQL中没有记录?

MYSQL 查询总和