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

时间:2017-04-24 13:38:00

标签: php mysql pdo mariadb

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

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

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

2 个答案:

答案 0 :(得分:1)

没有简单的方法,因为这个信息是由mysql_info() C API调用返回的(这是C API,而不是多年前在PHP中弃用的mysql API,虽然它确实实现了相同的调用),这不是在PDO中实现的供应商过于具体。

您可以使用PDOStatement::rowCount()返回受影响的行数或匹配的行数。但是,该方法返回的值取决于您配置与mysql的连接的方式:

如果您提供PDO::MYSQL_ATTR_FOUND_ROWS作为配置选项,则rowCount()会返回匹配的行:

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

如果您退出此选项,则rowCount()将返回受影响的行。因此,没有简单的方法可以在单个连接中获取这两种信息。

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

我不知道你将如何获得最后一个陈述的重复数量。

<强>的mysqli

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

答案 1 :(得分:0)

并且......使用microtime(true)来获取时间。并执行SHOW WARNINGS(就像它是一个SELECT)来获取任何警告(或没有)。