当我在命令行上运行查询时,我得到类似于此的结果:
Query OK, 0 rows affected (0.23 sec)
Records: 0 Duplicates: 0 Warnings: 0
有没有办法使用PHP PDO获取上述信息?
答案 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
)来获取任何警告(或没有)。