0

検索phpでアクセスしたい3つのテーブルがあります。そのうちの 2 つには、すべてのユーザー プロファイル情報が含まれています。1 つは cprofile と呼ばれ、もう 1 つは bprofile と呼ばれます。どちらも、ユーザー名、電子メール、パスワード、そして最も重要なプロファイル画像を含むユーザー テーブルにリンクされています。

検索エンジンを使用して、検索から個々のプロファイル テーブルへの情報の両方にアクセスし、ユーザー テーブルからアカウント情報を収集しようとしています。これは、両方のタイプのユーザーを検索するための私のコードです。

$search_output = "";
if( isset($_POST['searchquery']) && $_POST['searchquery'] != "" ) {
    $searchquery = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['searchquery']);
    if($_POST['filter1'] == "Whole Site") {
        $sqlCommand = "(SELECT count(*) FROM cprofile WHERE firstname ='%".$searchquery."%' OR lastname ='%".$searchquery."%')
            UNION (SELECT  count(*) FROM bprofile WHERE cname ='%".$searchquery."%')";
        $query = mysqli_query( $db_conx, $sqlCommand ) or die( mysqli_error($db_conx) );
        $count = mysqli_num_rows( $query ); 
        while( $row = mysqli_fetch_array($query, MYSQLI_ASSOC) ) {
            $userid = $row["userID"];
            $ret = mysqli_query($db_conx, "SELECT id, username FROM users WHERE id='$userid'");
            while($raw = mysqli_fetch_array($ret, MYSQLI_ASSOC)) {
                $username = $raw['username']; $file= $raw['avatar'];
            }
        }
    }
}

私がどこで間違っているのか、この問題を解決するにはどうすればよいのか、誰か気づいていますか? 前もって感謝します

4

1 に答える 1

0

ここで間違った方向に進んでいる可能性がありますが、クエリからカウントを取得し、while ループでユーザー ID を探しています。両方が必要な場合は、次のようにします

$sqlCommand = "
  (SELECT userid, count(*) as count FROM cprofile WHERE firstname ='%".$searchquery."%' OR lastname ='%".$searchquery."%')
    UNION 
  (SELECT userid, count(*) as count FROM bprofile WHERE cname ='%".$searchquery."%')
";
于 2013-03-18T02:32:29.367 に答える