【发布时间】:2012-04-26 03:59:06
【问题描述】:
尝试学习新的东西 - 特别是尝试在使用 MySQL 时选择是否使用 MySQLi 或 PDO 用于未来的项目 - 我偶然发现了 this page,它显示了可供我使用的选项的概述。
本页底部是一个表格,比较了与 mysql 通信的三种主要方法的功能。在“API 支持客户端预处理语句”行中,它表示 PDO 支持这一点,而 MySQLi 不支持。
我知道准备好的语句是什么。 this question 的答案是我认为是服务器端准备好的语句的一个简单示例。而 PHP 是一种服务器端语言,这反过来意味着客户端准备好的语句是否可用并不重要。但这让我想知道为什么那甚至在 PHP 手册中列出。
那么什么是客户端准备好的语句?
【问题讨论】:
-
我假设这在与 Web 模型不同的上下文中使用客户端/服务器 - 即 MySQL 是服务器,PHP 是此上下文中的客户端。即使他们都在同一台计算机上。
-
当然这指的是
PDO::ATTR_EMULATE_PREPARES,这是一个模拟带有插值和转义的准备好的语句的设置。这是在库中完成的,因此在技术上是客户端,在请求被传输到数据库服务器之前。 -
@MattFenwick 虽然这很有意义,但这并不能解释为什么同一张表显示支持所有库的服务器端准备语句,但如果我们只有其中一个支持客户端接受 PHP 是客户端的前提。
标签: php mysql pdo mysqli prepared-statement