データベース操作に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は、現在の行から指定された列の値を抽出するために使用される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を通常の式で使用することにより、データベースからの特定のルールに準拠するデータを柔軟かつ効率的に除外できます。このアプローチは、コードだけでなく、大量の構造化データの処理にも非常に適しています。この手法をマスターすると、データ処理をさらに一歩進めることができます。