MySQLi で PHP の mysql_result() 関数の機能を複製する方法
従来の PHP コードで一般的に使用される mysql_result() 関数。開発者が MySQL クエリ結果から特定のデータに迅速にアクセスできるようにします。ただし、この関数は、MySQL データベースと対話するための改良された推奨拡張機能である MySQLi ではネイティブにサポートされていません。
行をフェッチする代替アプローチ
行を取得する一般的なアプローチの 1 つMySQLi クエリ結果からのデータは、 fetch_assoc() メソッドを使用して対応する行をフェッチします。以下に例を示します。
if ($r && $r->num_rows) { $row = $r->fetch_assoc(); $blarg = $row['blah']; }
このアプローチには複数の行が含まれており、mysql_result() のような専用関数を使用するよりも効率が低くなる可能性があります。
カスタム同等関数
MySQLi で mysql_result() の機能を複製するには、カスタム関数を作成できます。以下に示すように:
function mysqli_result($res,$row=0,$col=0){ $numrows = mysqli_num_rows($res); if ($numrows && $row <= ($numrows-1) && $row >=0){ mysqli_data_seek($res,$row); $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res); if (isset($resrow[$col])){ return $resrow[$col]; } } return false; }
この関数は行と列のインデックスをパラメーターとして受け取り、対応するデータが存在する場合はそれを返します。また、境界外のリクエストに関連する潜在的なエラーも処理します。
使用法:
mysqli_result() 関数は、mysql_result() と同様の方法で使用できます。 :
if ($r && $r->num_rows) $blarg = mysqli_result($r, 0, 'blah');
メリットと制限事項
カスタム mysqli_result() 関数を使用すると、より簡潔なコードが可能になり、MySQLi クエリ結果からデータを取得するために必要な行数が削減されます。ただし、この関数は PHP の動的関数呼び出しに依存しているため、元の mysql_result() 実装と比較してパフォーマンスが若干低下する可能性があることに注意してください。
以上がPHP の `mysql_result()` 関数を MySQLi に置き換えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。