启用mysqli报告,捕获PHP程序中未使用索引的查询语句.

使用mysqli_report($flags)函数

在代码开发和测试期间有助于改进查询的函数。根据标志,它报告来自mysqli函数调用或不使用索引的查询(或使用错误索引)的错误。

代码如下

<?php
/* 激活报告 */
mysqli_report(MYSQLI_REPORT_ALL);

$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* 检查连接 */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* 此查询会报告错误 */
$result = mysqli_query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* 此查询会报告一个未使用的索引 */
$result = mysqli_query("SELECT Name FROM City WHERE population > 50000");

mysqli_free_result($result);

mysqli_close($link);
?>

输出

No index used in query/prepared statement SELECT Name FROM `City` WHERE `population`>50000

其中

支持的参数为

支持的标志
名称 描述
MYSQLI_REPORT_OFF 报告关闭
MYSQLI_REPORT_ERROR 报告mysqli函数调用的错误
MYSQLI_REPORT_STRICT 抛出mysqli_sql_exception以获取错误而不是警告
MYSQLI_REPORT_INDEX 如果查询中未使用索引或错误索引,则报告
MYSQLI_REPORT_ALL 设置所有选项(全部报告)

注:如果使用pdo,则可以在 sql语名前加EXPLAIN,可以得到索引信息。

原创文章,转载请注明来自Lenix博客,地址:http://blog.p2hp.com/archives/5562

最后更新于 2020年11月6日

启用mysqli报告,捕获PHP程序中未使用索引的查询语句.
标签: