PHP Conference Japan 2024

mysqli::get_warnings

mysqli_get_warnings

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

mysqli::get_warnings -- mysqli_get_warnings取得 SHOW WARNINGS 的結果

說明

物件導向風格

public mysqli::get_warnings(): mysqli_warning|false

程序風格

mysqli_get_warnings(mysqli $mysql): mysqli_warning|false

返回一個由 mysqli_warning 組成的單向鏈結串列,如果沒有警告則返回 false。串列中的每個物件對應於 SHOW WARNINGS 結果中的一行。呼叫 mysqli_warning::next() 將使用下一行的值重新填充物件。

注意 建議使用 SQL 命令 SHOW WARNINGS [limit row_count] 來擷取警告訊息,而不是使用此函式。

警告

鏈結串列無法倒回或再次擷取。

參數

mysql

僅限程序風格:由 mysqli_connect()mysqli_init() 返回的 mysqli 物件

回傳值

返回一個由 mysqli_warning 組成的單向鏈結串列,如果沒有警告則返回 false

範例

範例 #1 遍歷鏈結串列以擷取所有警告

物件導向風格

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$mysqli->query("SELECT 1/0, CAST('NULL' AS UNSIGNED)");

if (
$mysqli->warning_count > 0) {
$warning = $mysqli->get_warnings();
if (
$warning !== false) {
do {
printf("錯誤代碼:%s\n", $warning->errno);
printf("訊息:%s\n", $warning->message);
} while (
$warning->next());
}
}

程序風格

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "user", "password", "test");

mysqli_query($link, "SELECT 1/0, CAST('NULL' AS UNSIGNED)");

if (
mysqli_warning_count($link) > 0) {
$warning = mysqli_get_warnings($link);
if (
$warning !== false) {
do {
printf("錯誤代碼:%s\n", $warning->errno);
printf("訊息:%s\n", $warning->message);
} while (
$warning->next());
}
}

以上範例會輸出

Error number: 1365
Message: Division by 0
Error number: 1292
Message: Truncated incorrect INTEGER value: 'NULL'
新增筆記

使用者貢獻的筆記 1 則筆記

匿名
10 年前
注意事項
如果回傳任何警告,呼叫此函式將會改變 mysqli_affected_rows 的輸出。因此,如果您在應用程式中使用 mysqli_affected_rows,請務必在呼叫 mysqli_get_warnings 之前呼叫它。
To Top