UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#107 興味や趣味を基にしたマッチング処理

記入日:2023-04-25 編集日:2023-04-25

PHPで興味や趣味を基にしたマッチング処理する方法を解説してみようと思います。

この記事を読むと(約5分)
PHPで興味や趣味を基にしたマッチング処理する方法がイメージできます。

以下のコードは、PHPを用いてMySQLデータベースに接続し、ユーザー間のマッチングを行うためのサンプルコードです。

最初に、データベース接続のための設定を行います。MySQLを使用する場合、ホスト名、データベース名、ユーザー名、パスワードを指定してPDOオブジェクトを作成します。その後、setAttribute()メソッドを使用してPDOのエラーモードを設定し、エラーが発生した場合に例外を投げるようにします。

次に、マッチングに必要な情報を取得するためのクエリを実行します。この例では、興味や趣味を保存するinterestsテーブルと、ユーザーのプロフィール情報を保存するusersテーブルが使用されています。

// データベース接続の設定
$dsn = 'mysql:host=localhost;dbname=database_name;charset=utf8';
$username = 'username';
$password = 'password';

// PDOオブジェクトを作成し、データベースに接続
try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo '接続エラー:' . $e->getMessage();
    exit();
}

// マッチングのためのクエリを実行
$sql_match = "SELECT * FROM interests";
$stmt_match = $pdo->query($sql_match);

// マッチングを行うための配列を初期化
$match_array = array();

// 興味や趣味の情報を配列に追加
while ($interest = $stmt_match->fetch(PDO::FETCH_ASSOC)) {
    $match_array[$interest['user_id']][] = $interest['interest'];
}

// マッチング対象となるユーザーIDを指定
$current_user_id = 1;

// ユーザーのプロフィール情報を取得し、共通する興味や趣味が2つ以上ある場合に、マッチングを行う
$sql_user = "SELECT * FROM users";
$stmt_user = $pdo->query($sql_user);

$matched_users = array();

while ($user = $stmt_user->fetch(PDO::FETCH_ASSOC)) {
    $common_interests = array_intersect($match_array[$user['id']], $match_array[$current_user_id]);

    if (count($common_interests) >= 2 && $user['id'] !== $current_user_id) {
        $matched_users[] = $user['id'];
    }
}

// マッチングされたユーザーのIDを表示
foreach ($matched_users as $matched_user_id) {
    echo $matched_user_id . '
'; } // データベース接続を閉じる $pdo = null;

興味や趣味の情報を取得するために、interestsテーブルからデータを取得し、それをユーザーIDをキーとした配列$match_arrayに格納します。この配列は、後でユーザー間の共通の興味や趣味を見つけるために使用されます。

その後、usersテーブルからプロフィール情報を取得し、ユーザー間のマッチングを行います。マッチングは、共通する興味や趣味が2つ以上ある場合に行われます。共通する興味や趣味を見つけるために、array_intersect()関数が使用されます。$matched_users配列に、マッチングされたユーザーのIDが格納されます。

最後に、$matched_users配列に格納されたユーザーIDを表示し、データベース接続を閉じます。

このように、PHPとMySQLを組み合わせることで、簡単にデータベース操作やマッチング機能を実装することができます。ただし、実際のアプリケーションで使用する場合には、セキュリティやパフォーマンスなどの問題に十分注意する必要があります。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。