PHPでMySQLデータベースを使用する場合、クエリが正常に実行されるかどうかに注意を払うことがよくありますが、クエリが正常に実行されますが、データの切り捨て、フィールドタイプのミスマッチなどの警告情報が伴う場合があります。
PHPのMySQLI拡張機能は、最新のデータベース操作によって生成された警告情報の取得に特に使用されるメソッドget_warnings()を提供します。この記事では、このメソッドの使用シナリオと特定の使用法を詳細に紹介して、データベースの警告をより適切にキャプチャおよび処理するのに役立ちます。
mysqli :: get_warnings()は、最新のデータベース操作によって生成されたすべての警告を含むmysqli_warningオブジェクトを返すmysqliクラスの方法です。このオブジェクトを通過することにより、各警告のエラーコードと詳細を取得できます。
この方法は、挿入または更新中に切り捨てられたデータ、不完全なマッチングフィールドタイプを使用したり、特定のMySQL関数を実行したり、非致命的な警告を返したりするなど、実行が成功しますが、潜在的な問題を抱えるSQLステートメントに特に適しています。
以下は、mysqli :: get_warnings()の使用を示す簡単な例です。長さの制限を定義する文字列フィールドに余分な長いデータを挿入すると、警告がトリガーされます。
<?php
// データベースに接続します
$mysqli = new mysqli('gitbox.net', 'username', 'password', 'testdb');
if ($mysqli->connect_errno) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// サンプルテーブルを作成します
$mysqli->query("CREATE TABLE IF NOT EXISTS test_warning (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(5)
)");
// 余分な長い文字列を挿入します,トリガー警告
$mysqli->query("INSERT INTO test_warning (name) VALUES ('長さを超えた文字列をテストします')");
// 警告情報を取得します
$warnings = $mysqli->get_warnings();
if ($warnings) {
do {
printf("警告コード: %d, 情報: %s\n", $warnings->errno, $warnings->message);
} while ($warnings->next());
} else {
echo "无警告情報。\n";
}
// 接続を閉じます
$mysqli->close();
?>
上記のコードで:
フィールドの長さの制限を超える文字列を挿入しました。 MySQLは挿入を実行しますが、文字列を切り捨てて警告を発します。
$ mysqli-> get_warnings()を使用して、警告オブジェクトを取得します。
ループ上で$ Awarnss-> next()を呼び出すことにより、すべての警告と出力の詳細を反復します。
警告データが挿入または更新されたときのチェック<br> データの有効性に関する厳格な要件がある場合、警告メッセージは潜在的なデータ損失またはフォーマットエラーを検出するのに役立ちます。
複雑なSQL操作のデバッグ<br> いくつかの複雑なクエリまたはストアドプロシージャが警告を返す場合があり、この方法を使用するとデバッグに役立ちます。
ロギングと監視<br> 警告を自動的につかんでログに書き込み、操作とメンテナンスの担当者がタイムリーにデータベースの例外を発見するのを支援します。
mysqli :: get_warnings()は、操作の結果に影響を与えないがデータの品質に影響を与える可能性のある警告をキャプチャして対処するのに役立つ非常に実用的なツールです。合理的にすることで、アプリケーションをより堅牢で安定させることができます。
PHPとMySQLを使用する詳細については、最新のチュートリアルと例については、 https://gitbox.netにアクセスしてください。
関連タグ:
mysqli