• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mysqli::$info()

    (PHP 5, PHP 7)

    返回最近执行的 SQL 语句的信息

    说明

    面向对象风格
    string $mysqli->info;
    过程化风格
    mysqli_info(mysqli$link): string

    mysqli_info()函数返回一个包含最近执行的 SQL 语句信息的字符串。下面有一些参考样例:

    mysqli_info 可能的返回值
    SQL 语句类型返回结果字符串示例
    INSERT INTO...SELECT...Records: 100 Duplicates: 0 Warnings: 0
    INSERT INTO...VALUES(...),(...),(...)Records: 3 Duplicates: 0 Warnings: 0
    LOAD DATA INFILE ...Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
    ALTER TABLE ...Records: 3 Duplicates: 0 Warnings: 0
    UPDATE ...Rows matched: 40 Changed: 40 Warnings: 0
    Note:

    如果所执行的 SQL 语句不是上面列出来的这几种类型的,mysqli_info()函数会返回一个空字符串。

    参数

    $link

    仅以过程化样式:由mysqli_connect()或mysqli_init()返回的链接标识。

    返回值

    最近执行的 SQL 语句的相关信息。

    范例

    Example #1$mysqli->info例程

    面向对象风格

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
    /* 检查连接 */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    $mysqli->query("CREATE TEMPORARY TABLE t1 LIKE City");
    /* INSERT INTO .. SELECT */
    $mysqli->query("INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
    printf("%s\n", $mysqli->info);
    /* 关闭连接 */
    $mysqli->close();
    ?>
    

    过程化风格

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");
    /* 检查连接 */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    mysqli_query($link, "CREATE TEMPORARY TABLE t1 LIKE City");
    /* INSERT INTO .. SELECT */
    mysqli_query($link, "INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
    printf("%s\n", mysqli_info($link));
    /* 关闭连接 */
    mysqli_close($link);
    ?>
    

    以上例程会输出:

    Records: 150  Duplicates: 0  Warnings: 0
    

    参见

    • mysqli_affected_rows() Gets the number of affected rows in a previous MySQL operation
    • mysqli_warning_count() Returns the number of warnings from the last query for the given link
    • mysqli_num_rows() Gets the number of rows in a result
    Might save someone some time...
    <?php
    $prototype='Rows matched: 0 Changed: 1 Warnings: 2';
    list($matched, $changed, $warnings) = sscanf($prototype, "Rows matched: %d Changed: %d Warnings: %d");
    ?>
    
    If inserted just one row, mysqli_info() returns empty string which might be confusing, but mysqli_affected_rows() returns 1 in this case.