如何使用 PHP 在 mysql 或 pdo 中显示 ALTER 语句的结果?

How do you show the result of an ALTER statement in mysql or pdo using PHP?

当我在命令行上运行查询时,我得到类似这样的结果:

Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0

有没有办法使用 PHP PDO 获取上述信息?

没有简单的方法,因为此信息是由 mysql_info() C API 调用 return 编辑的(这是 C API,而不是 mysql API 几年前在 php 中被弃用,尽管它确实实现了相同的调用),但在过于特定于供应商的 PDO 中未实现。

您可以使用 PDOStatement::rowCount() 到 return 受影响的行数或匹配的行数。但是,该方法 return 的值取决于您如何配置与 mysql:

的连接

如果您提供 PDO::MYSQL_ATTR_FOUND_ROWS 作为配置选项,那么 rowCount() return 匹配的行:

$connection = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));

如果您省略此选项,则 rowCount() return 会影响行。因此,没有简单的方法可以在一个连接中获取这两个信息。

要获得警告的数量,您可以发出 show warnings sql 语句并循环遍历其结果集并计算结果集中的警告(或者可能是注释)。 show warnings 结果也包括错误和注释,这就是您可能需要过滤列表的原因。

我不知道你如何获得最后一条语句的重复次数。

mysqli

如果您使用 mysqli 而不是 PDO,那么您可以使用 mysqli_info() 调用来获取您要查找的数据。

并且...使用 microtime(true) 获取时间。并执行 SHOW WARNINGS(就好像它是 SELECT)以获得任何警告(或 none)。