PHPでは、 MySQLI拡張機能がMySQLデータベースで動作するリッチ関数を提供します。 mysqli_stmt :: $ errorとmysqli :: errnoは、開発者がデータベース操作の問題を捉えて診断するのに役立つエラー処理に関連する2つの重要なプロパティです。この記事では、これら2つのプロパティの違いと、それらを組み合わせて使用してデバッグ効率を向上させる方法について説明します。
mysqli_stmt :: $ errorは、現在のプリプロセシングステートメントオブジェクト( mysqli_stmt )に関連するエラーメッセージを取得するために使用されるプロパティです。このプロパティは、前処理ステートメントを実行するときに発生するエラーメッセージを含む文字列を返します。
たとえば、SQLクエリを実行すると、クエリが失敗した場合、 MySQLI_STMT :: $エラーはMySQLサーバーのエラーメッセージを返します。
サンプルコード:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// データベース接続を確認します
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// 準備する SQL 声明
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
echo "準備する声明失败: " . $mysqli->error;
exit;
}
// パラメーターをバインドして実行します
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
// 実行結果を確認してください
if ($stmt->error) {
echo "実行エラー: " . $stmt->error; // 出力詳細なエラー情報
}
?>
上記のコードでは、 $ STMT->エラーを使用して、SQLステートメントの実行時に発生するエラーメッセージを取得します。これは、デバッグやトラブルシューティングに非常に役立ちます。
mysqli :: errnoは、最後のmysql操作のエラーコードを取得するために使用されるプロパティです。詳細なエラー情報を返す$エラー属性とは異なり、 errnoは整数値を返し、MySQLエラーの特定の数を示します。
サンプルコード:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// データベース接続を確認します
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// 埋め込む SQL クエリ
$result = $mysqli->query("SELECT * FROM non_existing_table");
if (!$result) {
echo "MySQL エラーコード: " . $mysqli->errno; // 输出エラーコード
echo "MySQL エラーメッセージ: " . $mysqli->error; // 出力詳細なエラー情報
}
?>
この例では、クエリが失敗した場合、 $ mysqli-> errnoはmysqlエラーコードを返します。たとえば、 1146は「テーブルは存在しない」という意味です。 $ mysqli->エラーは「テーブル」データベースの詳細なエラーメッセージを返します。
mysqli_stmt :: $ errorとmysqli :: errnoは両方ともmysqlエラーに関連していますが、それらの間にはいくつかの重要な違いがあります。
mysqli_stmt :: $エラーは、プリプロセシングステートメントのエラーメッセージ( mysqli_stmt )であり、 mysqli :: errnoはmysql接続のエラーコードです。 mysqli_stmt :: $エラーは、通常、開発者への出力に使用されるエラーメッセージ文字列を提供します。 mysqli :: errnoはエラーコードを返します。これは、プログラムでのさらなるエラー処理と診断によく使用されます。
さまざまなアクションのスコープ: mysqli_stmt :: $エラーはmysqli_stmtを介して実行されたSQLステートメントにのみ適用できますが、 mysqli :: errnoはデータベース接続全体に適用でき、すべてのタイプのクエリと操作に適用できます。
PHPデータベースコードをデバッグする場合、 mysqli_stmt :: $ errorまたはmysqli :: errnoのみを使用すると、問題を見つけるのに役立ちますが、2つを一緒に使用すると、問題の根本原因をすばやく見つけることができます。
デバッグの提案:最初にmysqli :: errnoを確認してエラーコードを取得し、次にmysqli_stmt :: $ errorまたはmysqli ::エラーを使用して詳細なエラー情報を取得できます。これら2つを組み合わせることにより、どの部分が間違っているかをより正確に判断し、適切な対策を講じることができます。
組み合わせた使用例コード:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// データベース接続を確認します
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// 埋め込む SQL クエリ
$result = $mysqli->query("SELECT * FROM non_existing_table");
if (!$result) {
echo "MySQL エラーコード: " . $mysqli->errno . "\n"; // 获取エラーコード
echo "MySQL エラーメッセージ: " . $mysqli->error . "\n"; // 获取详细エラーメッセージ
}
?>
上記のコードでは、最初にmysqli :: errnoを介してエラーコードを取得し、 mysqli :: errorを使用して詳細なエラー情報を取得します。このような組み合わせは、特にエラーコードとエラーメッセージが互いに補完する場合、開発者が問題をすばやく診断するのに役立ちます。
mysqli_stmt :: $エラーは、プリプロセシングステートメントに関連するエラー情報を取得するために使用されますが、 mysqli :: errnoはデータベース接続のエラーコードを取得するために使用されます。
それらはそれぞれ異なるエラーメッセージ形式を提供し、前者は文字列を返し、後者は数字を返します。
2つを使用することにより、MySQL操作をより効率的にデバッグし、問題を迅速に発見して解決できます。
これらの2つの属性は、PHP開発における非常に重要なデバッグツールです。使用法をマスターすると、デバッグ効率を大幅に改善し、データベース操作のエラーを減らすことができます。