現在の位置: ホーム> 最新記事一覧> mysqli_stmt :: $ errorとmysqli :: errnoと組み合わせの使用手法の違い

mysqli_stmt :: $ errorとmysqli :: errnoと組み合わせの使用手法の違い

gitbox 2025-05-19

PHPでは、 MySQLI拡張機能がMySQLデータベースで動作するリッチ関数を提供します。 mysqli_stmt :: $ errormysqli :: errnoは、開発者がデータベース操作の問題を捉えて診断するのに役立つエラー処理に関連する2つの重要なプロパティです。この記事では、これら2つのプロパティの違いと、それらを組み合わせて使用​​してデバッグ効率を向上させる方法について説明します。

1。MySqli_Stmt :: $エラーの役割

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ステートメントの実行時に発生するエラーメッセージを取得します。これは、デバッグやトラブルシューティングに非常に役立ちます。

2。Mysqli :: Errnoの役割

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->エラーは「テーブル」データベースの詳細なエラーメッセージを返します。

3. mysqli_stmt :: $ errormysqli :: errnoの違い

mysqli_stmt :: $ errormysqli :: errnoは両方ともmysqlエラーに関連していますが、それらの間にはいくつかの重要な違いがあります。

  • mysqli_stmt :: $エラーは、プリプロセシングステートメントのエラーメッセージ( mysqli_stmt )であり、 mysqli :: errnoはmysql接続のエラーコードです。 mysqli_stmt :: $エラーは、通常、開発者への出力に使用されるエラーメッセージ文字列を提供します。 mysqli :: errnoはエラーコードを返します。これは、プログラムでのさらなるエラー処理と診断によく使用されます。

  • さまざまなアクションのスコープmysqli_stmt :: $エラーmysqli_stmtを介して実行されたSQLステートメントにのみ適用できますが、 mysqli :: errnoはデータベース接続全体に適用でき、すべてのタイプのクエリと操作に適用できます。

4。Mysqli_stmt :: $ errormysqli :: 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を使用して詳細なエラー情報を取得します。このような組み合わせは、特にエラーコードとエラーメッセージが互いに補完する場合、開発者が問題をすばやく診断するのに役立ちます。

5。概要

  • mysqli_stmt :: $エラーは、プリプロセシングステートメントに関連するエラー情報を取得するために使用されますが、 mysqli :: errnoはデータベース接続のエラーコードを取得するために使用されます。

  • それらはそれぞれ異なるエラーメッセージ形式を提供し、前者は文字列を返し、後者は数字を返します。

  • 2つを使用することにより、MySQL操作をより効率的にデバッグし、問題を迅速に発見して解決できます。

これらの2つの属性は、PHP開発における非常に重要なデバッグツールです。使用法をマスターすると、デバッグ効率を大幅に改善し、データベース操作のエラーを減らすことができます。