PHP PDO 和 MySQLi [重复]

2024-06-10

我刚刚完成了 PHP 入门课程,整个 stackoverflow 论坛上的人们都建议我切换到 PDO、准备好的语句或 MYSQLi,我简单地检查了手册,但其中大部分内容都超出了我的理解范围。

到目前为止我一直在使用 mysql_* 函数,所以这些概念对我来说是新的。我认为它们用于访问和执行数据库特定操作,但我不确定。

那么 PDO、准备好的语句和 MySQLi 之间有什么区别,它们是完成相同任务的不同功能吗?它们在脚本中是否兼容,或者是“选择其中之一”?最后哪个提供最好的性能?

更新:感谢您的回答,我将寻找更多 PDO 教程。

作为参考,我还发现以下帖子很有用:

mysqli 和 PDO 哪个又快又轻 https://stackoverflow.com/questions/10696696/which-one-is-fast-and-light-mysqli-or-pdo

mysqli 或 PDO - 优缺点是什么? https://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons


在基础层面上,mysql、mysqli 和 PDO 扩展都回答了这个问题我如何与数据库对话?它们都提供连接到数据库并从中发送和检索数据的函数和功能。您可以同时使用它们,一次建立多个与数据库的连接,但这通常是无意义的。

mysql* 是一个非常简单的扩展,基本上允许您连接到数据库,向其发送 SQL 查询,仅此而已。
mysqli 通过添加参数化查询和其他一些东西来改进这一点(顾名思义)。
PDO 是一种将多个数据库驱动程序抽象到一个包中的扩展,即它允许您使用相同的代码连接到 MySQL、Oracle、MS SQL Server 和许多其他数据库,而无需使用数据库特定的扩展或重写代码您切换数据库(至少在理论上)。它还支持参数化查询。

如果您知道您将只使用 MySQL,那么 mysqli 是一个不错的选择。特别是因为您可以以程序方式使用它,您已经习惯了 mysql 扩展。如果您不熟悉 OOP,这会很有帮助。除此之外,PDO 是一个很好的面向对象的、灵活的数据库连接器。


* 注意mysql扩展is now 已弃用并将在将来的某个时候被删除 http://www.php.net/manual/en/mysqlinfo.api.choosing.php。这是因为它是古老的,充满了不良做法,缺乏一些现代特征。不要用它来编写新代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP PDO 和 MySQLi [重复] 的相关文章

  • php 在内容前插入十六进制字符数

    我正在将网站移动到新服务器 旧服务器有 php 5 3 2 新服务器有 php 5 5 9 Centos httpd Apache 2 2 26 我已经复制了文件 它工作正常 除了唯一奇怪的事情 一些奇怪的十六进制数字被插入到页面内容之前
  • symfony 2 形式的函数 getName 做什么

    这是我的表格类 class CommentType extends AbstractType public function buildForm FormBuilder builder array options builder gt ad
  • 这些加密算法有什么区别?

    两者有什么区别MCRYPT RIJNDAEL 128 MCRYPT RIJNDAEL 256 MCRYPT BLOWFISH等等 哪一种最适合网络数据传输 Rijandel 是 AES 的另一个名称 AES 是当前的 一个好的标准 算法 数
  • MySQL 中如何使用继承?

    所以我正在读一本关于数据库设计原理的书 并读到了有关继承的章节 但我对如何在 MySQL 中将子类与其超类 连接 感到困惑 The table structure would for example look like this 那么我如何
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • 如何在 Laravel 5 中处理嵌套的 JSON 对象请求?

    我们在 Laravel 5 和 AngularJs Ionic 中运行此 Web 服务来处理 Web 当我们将请求从 Web 客户端 发送到 Web 服务 后端 时 我们传递了嵌套的 JSON 对象 我们在读取服务器端父对象下的所有子对象时
  • CSV 从 UTF8 到 ISO-8859-1

    我正在尝试修改我的 CSV 导出 但它不会将我的 CSV 从 UTF 8 转换 保存为 ISO 8859 1 请问我做错了什么吗 实际上自从修改了这个之后 我得到了一个空的 CSV 文件 php 7 0 x function my Gene
  • WAMP 不显示目录列表中的图标

    过去 我通过 vmware 处理 PHP 代码 但最近我决定转而通过 WAMP 在 Windows 8 1 上 在本地进行处理 我创建了一个空文件夹tests in the www folder 然后在我的浏览器上输入http localh
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • 使用 DOM 获取 div 的内容(包括子标签)

    我正在使用 DOM 来获取 div 标签的内容 但内部 html 部分未显示 功能是 dom new DOMDocument libxml use internal errors true dom gt loadHTMLFile url l
  • 如何在 joomla 模块中通过 javascript 发送输入文件类型

    我想将带有 javascript 的文件发送到 php 文件 我的 php 文件中有这个表单
  • 如何覆盖 phpunit 中导出的变量?

    我知道我可以设置环境变量 https phpunit de manual current en appendixes configuration html在我的 phpunit xml 里面
  • 如何获取mysql中一条记录的大小

    如果表包含 TEXT 或 BLOB 类型的字段 如何获取 MySql 中记录的大小 是否可以使用sql语句获取记录或表的大小 要计算字符串或 blob 的大小 以字节为单位 请使用LENGTH YourColumn http dev mys
  • 避免 SQLite3 中的 SQL 注入

    我正在尝试找出一种避免 SQL 注入的好简单方法 到目前为止我只能提出两个想法 对用户输入进行 Base64 编码 其实不想这样做 使用正则表达式删除不需要的字符 目前正在使用这个 不确定是否100 安全 这是我当前的代码
  • 左连接 SQL 求和

    我有两张桌子想要加入 比如说表 a 和表 b 表 b 有许多行指向表 a 表 b 包含价格 实际上是一个购物篮 所以我想要的是表a中的所有记录和表b中的价格之和 我努力了 select a sum b ach sell from booki
  • 从多个选择列表中插入数据到mysql数据库(html形式)

    我制作了一个表格 其中有商店的 ID
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • PHP 除法浮点值问题

    当我尝试获取余数时 它给出了无效值 我试图获得两位小数的余数 我得到 3 4694469519536E 18 我的价值观是 x 0 1 y 0 005 我尝试了以下方法 echo ed fmod 0 1 0 005 OutPut 3 469
  • 处理查询字符串参数时 Codeigniter 缓存问题

    问候 我正在编写一个 CI Web 应用程序 它实现标准文件缓存功能 如下所示 this gt output gt cache n 我使用了段和查询字符串参数的组合 因此似乎遇到了问题 我在用例和输出类代码中看到的是 缓存仅基于段 像这样

随机推荐