現在の位置: ホーム> 最新記事一覧> クエリの結果をmysqli_result :: fetch_columnと正規表現と組み合わせてフィルタリングする方法

クエリの結果をmysqli_result :: fetch_columnと正規表現と組み合わせてフィルタリングする方法

gitbox 2025-05-26

データベース操作にPHPを使用する場合、 MySQLI拡張機能は、結果セットを処理するための多くの便利なインターフェイスを提供します。その中で、 mysqli_result :: fetch_columnは、結果セットで単一の列値を直接取得するための簡潔で効率的な方法です。ただし、実際の開発では、特定のパターンに基づいてフィルタリングなど、このデータをさらに処理する必要があり、正規表現が役立ちます。

この記事では、 fetch_columnと正規式を組み合わせてクエリ結果をフィルタリングして、より正確なデータ抽出効果を実現する方法について説明します。

基本的な環境の準備

まず、データベースに正しく接続されていることを確認し、クエリステートメントを実行します。たとえば、次のデータベース接続とクエリがあります。

<code> $ mysqli = new mysqli( "localhost"、 "user"、 "password"、 "database");

if($ mysqli-> connect_error){
die( "接続失敗:"。$ mysqli-> connect_error);
}

$ query = "ユーザーから電子メールを選択";
$ result = $ mysqli-> query($ query);
</code>

上記のコードでは、ユーザーテーブルからすべての電子メールフィールドを照会します。

fetch_columnを使用して、単一の列データを取得します

fetch_columnは、現在の行から指定された列の値を抽出するために使用されるmysqli_resultオブジェクトの方法です(デフォルトは最初の列です)。通常、次の方法を使用して行ごとに抽出できます。

<code> while($ email = $ result-> fetch_column()){echo $ email。 "&lt; br&gt;"; } </code>

これにより、すべての電子メールアドレスを出力するだけです。

正規表現でフィルター

@gitbox.netで終了するメールアドレスのみを取得したいとします。ループに定期的な判断を追加できるとします。

<code> $ pattern = '/@gitbox\.net$/';

while($ email = $ result-> fetch_column()){
if(preg_match($ pattern、$ email)){
echo $ email。 "<br>";
}
}
</code>

このようにして、条件を満たすメールボックスのみを出力できます。特定のキーワードを含めたり、特定の形式を満たしたりするなど、ニーズに応じてルールをカスタマイズできます。

多重化の関数としてカプセル化されています

コードをより多用途にするために、関数としてカプセル化できます。

<code> function fetch_filtered_column(mysqli_result $ result、string $ pattern):array {$ mated = []; while($ value = $ result-> fetch_column()){if(preg_match($ pattern、$ value)){$ mated [] = $ value; }} return $ mated; } </code>

使用の例は次のとおりです。

<code> $ result = $ mysqli-> query( "ユーザーから電子メールを選択"); $ emails = fetch_filtered_column($ result、 '/@gitbox\.net$/');

foreach($ emails as $ email){
echo $ email。 "<br>";
}
</code>

アプリケーションシナリオ拡張

この組み合わせは、メールボックスのフィルタリングに限定されませんが、たとえば使用することもできます。

  • 携帯電話番号形式をフィルターします

  • 特定のドメイン名のURLを抽出します(たとえば、URLからgitbox.netドメイン名に属するアドレスを除外)

  • ユーザー名が命名仕様に準拠しているかどうかを判断します

たとえば、ユーザーがデータベースからユーザーから送信し、 gitbox.netドメイン名のURLのみを保持したい場合、これを行うことができます。

<code> $ result = $ mysqli-> query( "subscriptionsからWebサイトを選択"); $ urls = fetch_filtered_column($ result、 '/^https?:\ //(www\.)?gitbox\.net\//');

foreach($ urls as $ url){
echo $ url。 "<br>";
}
</code>

要約します

mysqli_result :: fetch_columnを通常の式で使用することにより、データベースからの特定のルールに準拠するデータを柔軟かつ効率的に除外できます。このアプローチは、コードだけでなく、大量の構造化データの処理にも非常に適しています。この手法をマスターすると、データ処理をさらに一歩進めることができます。