mysqli::$info()
(PHP 5, PHP 7)
返回最近执行的 SQL 语句的信息
说明
面向对象风格
string $mysqli->info;
过程化风格
mysqli_info(mysqli$link): string
mysqli_info()函数返回一个包含最近执行的 SQL 语句信息的字符串。下面有一些参考样例:
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.