現在の位置: ホーム> 最新記事一覧> mysqli_stmt :: $ error_listを使用して、複数のエラーメッセージを取得および管理する方法は?

mysqli_stmt :: $ error_listを使用して、複数のエラーメッセージを取得および管理する方法は?

gitbox 2025-08-24

mysqli_stmt :: $ error_listを使用して、複数のエラーメッセージを取得および管理する方法は?

エラー処理は、データベース操作にMySQLI拡張機能を使用する場合の開発プロセスの重要な部分です。通常、 mysqli_error()またはmysqli_stmt_error()を使用して、単一のエラーメッセージを取得します。ただし、MySQLIはMySQLI_STMT :: $ ERROR_LISTプロパティを提供します。これにより、準備ステートメントの実行時に複数のエラーメッセージをキャプチャおよび管理できます。これは、複雑なSQL操作にとって特に重要であり、コードのデバッグと最適化を改善するのに役立ちます。

1。mysqli_stmt :: $ error_listの概要

mysqli_stmt :: $ error_listは、現在のステートメントオブジェクトに関連するすべてのエラー情報を保存するクラスの配列です。それを通して、単一のエラーだけでなく、エラー情報の詳細なリストを取得できます。エラーコードやエラーテキストなど、各要素がエラーの特定の説明を表す配列を返します。

2。mysqli_stmt :: $ error_listを使用します

mysqli_stmt :: $ error_listを使用するには、まずmysqli接続を作成し、次にSQLステートメントを準備して実行する必要があります。実行中に複数のエラーが発生した場合、 $ error_listにはすべてのエラーメッセージが含まれます。次に、 ERROR_LISTプロパティにアクセスしてERROR_LISTプロパティを表示します。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 作成する MySQLi 接続する</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// 診る接続する是否成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"接続する失败: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// 準備する SQL 声明</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (username, email) VALUES (?, ?)"</span></span><span>);

</span><span><span class="hljs-comment">// 診る SQL 声明是否準備する成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"SQL 間違い: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error);
}

</span><span><span class="hljs-comment">// バインドパラメーター</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"testuser"</span></span><span>;
</span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-string">"invalidemail.com"</span></span><span>; </span><span><span class="hljs-comment">// ここのメールボックス形式が無効であると仮定します</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"ss"</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$email</span></span><span>);

</span><span><span class="hljs-comment">// 埋め込む SQL 声明</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();

</span><span><span class="hljs-comment">// 如果有間違い,输出間違い列表</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;errno) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"埋め込む間違い: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"間違い详情:\n"</span></span><span>;
    
    </span><span><span class="hljs-comment">// 打印所有間違い信息</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error_list);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"正常に挿入します!"</span></span><span>;
}

</span><span><span class="hljs-comment">// 关闭声明和接続する</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例では、最初にユーザーテーブルにデータを挿入しようとします。電子メールフィールドInvalideMail.comの値が正しくないため、MySQLは複数のエラーメッセージを返し、 ERROR_LISTに保存されます。

3. ERROR_LISTで複数のエラーを処理します

mysqli_stmt :: $ error_listによって返される配列には、エラーの部分が含まれています。通常、各要素は、2つのフィールドを含む連想配列です: errnoエラーerrnoはエラーコードを表し、エラーはエラーメッセージの説明です。この配列をループして、各エラーの詳細情報を1つずつ出力できます。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 診る是否有多个間違い</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">count</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error_list) &gt; </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"存在多个間違い:\n"</span></span><span>;
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"間違い代码: "</span></span><span> . </span><span><span class="hljs-variable">$error</span></span><span>[</span><span><span class="hljs-string">'errno'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"間違い信息: "</span></span><span> . </span><span><span class="hljs-variable">$error</span></span><span>[</span><span><span class="hljs-string">'error'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
    }
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例は、各エラーコードと対応するエラーメッセージを1つずつ出力します。複数のエラーがある場合、どの問題が発生しているかをより明確に理解し、異なるエラーに対して適切に処理できます。

4。mysqli_stmt :: $ error_listの利点

mysqli_stmt :: $ error_listを使用することの重要な利点は、複数のエラーメッセージをキャプチャできることです。一部の複雑なデータベース操作では、エラーが複数の理由によって引き起こされる場合があり、 ERROR_LISTは開発者が一度にすべてのエラーを取得するのに役立ち、それによりデバッグ効率が向上します。さらに、このようにして、異なるエラータイプに応じて異なる操作を実行するなど、エラー処理ロジックをより慎重に制御できます。

5。概要

mysqli_stmt :: $ error_listは、mysqliが提供する強力な機能であり、開発者はSQLステートメントを実行するときに複数のエラーメッセージをキャプチャおよび処理できます。このプロパティを使用することにより、SQL実行の問題をよりよく理解し、それによりデータベース操作とコード信頼性の安定性を改善できます。