2013-03-18 236 views
0

我有3个表我想访问我的搜索php。其中2个包含所有用户的配置文件信息。一个叫cprofile,另一个叫bprofile。它们都链接到包含用户名,电子邮件,密码和最重要的个人资料图片的用户表。php搜索引擎

随着搜索引擎,我试图访问搜索到个人资料表的信息,并从用户表中收集帐户信息。这是我寻找这两种类型的用户代码:

$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']; 
      } 
     } 
    } 
} 

是否有人通知我要去的地方错了,我怎么能解决这个问题?在此先感谢

+1

请缩进你的代码,以便它清晰。 – DaveRandom 2013-03-18 00:20:16

+4

不应该在'firstname ='%“中使用'LIKE'。$ searchquery。”%'OR'? – hjpotter92 2013-03-18 00:22:08

+0

这确实有帮助。但我的主要问题是尝试访问该获取数组以获取帐户详细信息,如配置文件图片和用户名。 – hsd 2013-03-18 00:28:08

回答

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."%') 
"; 
+0

谢谢,这确实有助于我面对的问题。它现在收集了我希望从while循环中获得的所有内容。再次感谢您的帮助:) – hsd 2013-03-18 11:31:38