我使用Sphinx Search來搜索我的網站上的項目。我是使用foreach找出索引,搜索來自哪裏? Foreach循環將迭代所有匹配搜索項的項目,並找出索引。foreach循環中嵌套while循環的結果集結構
數據庫中的所有項都有user_id,它引用用戶表中的用戶。因此,我想輸出的是顯示少量項目(搜索)並將其放在該用戶下。如果搜索「Book」,則輸出像這樣
Alex //Book1,Book2,Book3 all of them has user_id of 2 which refers to Alex
Book1
Book2
Book3
Jordan //Book11,Book12,Book18 all of them has user_id of 5 which refers to Joradn
Book11
Book12
Book18
and so on.
以下是一個
foreach ($res["matches"] as $doc => $docinfo) {
switch($docinfo['attrs']['table_id']) {
case 1: //if search come from index 1
$res_db = mysqli_query($connect3,'select id_2, image, user_id, title, detail from lunch_menu where id_2 = (('.$doc.'-300000))');
if ($res_db === false) {
echo "Error in mysql query #" . mysqli_errno($connect) . ' - ' . mysqli_error($connect);
} else {
$row = mysqli_fetch_assoc($res_db);
$connect4=mysqli_connect('localhost', 'root', '','user');
$sql2="SELECT * FROM `user`.`user_det` WHERE id='".$row['user_id']."' GROUP BY id ORDER
BY id DESC";
$query2=mysqli_query($connect4,$sql2);
while($row2 = mysqli_fetch_assoc($query2)){ //line X
$userx=$row2['id'];
$image=$row2['img'];
$busi_title=$row2['busi_title'];
$page_owner.="<img src='../../account/$userx/$image' width='140'
height='140'><b>$busi_title</b><hr>";
$res_db2 = mysqli_query($connect3,'select id_2, image, user_id, title, detail from
lunch_menu where id_2 in ((' . $doc . '-300000)) order by field(id_2,('.$doc.'-300000))');
$alu="";
while($row3 = mysqli_fetch_assoc($res_db2)){
$alu.=
'<img src="../../'.$row3['user_id'].'/lunch/'.$row3['image'].'" width="100" height="100">'
. '<a href="../../'.$row3['user_id'].'/menu_item2.php">' . $row3['title'] . '<a>'
. '<br/> '.$row3['detail'].'<br><br><br><br>' ;
}
$all.="<div id='' style='border:2px solid black;'>".$page_owner.".".$alu."</div>";
}
}
但上面的代碼是給我造成這樣
Alex
Book1
Alex
Book2
Alex
Book3
Jordan
Book11
Jordan
Book12
Jordan
Book18
and so on.
代碼
我需要做些什麼修改才能讓我的代碼像預期的那樣工作。我盡了最大努力找到一個解決方案,但沒有幫助。所以,只是發了一個SO帳戶來發布問題。
請幫忙,如果可以的話。那真是太棒了。
在此先感謝
感謝您瑞安你reply.We幾乎沒有
1更多修復,那麼我們done.Now什麼,我得到的是
Problem
Result is almost the way,I was looking for except for the first one.This is what I'm getting
Alex
Book1
Jordan
Book11
Book12
Book18
Alex
Book2
Book3
如果我可以在回覆$all
之前臨時執行order by user_id
,則可能會修復此錯誤。
因爲$all
打印user
和它的corresponding item
它在數據庫
請告知,我使用的是第二種方式整理出來的樣子,你showed.First一個不能正常工作。
我想通了第二部分的problem.To的實現這一理想的結果,我需要做的這
$cl->SetSortMode(SPH_SORT_EXTENDED, '@relevance DESC,user_id ASC');
這行代碼輸出的第一個最相關的搜索結果,並通過user_id
升序分類。
Special Thanks to Ryan
保存當前的用戶ID,並且只打印出用戶信息 - >'$ page_owner = 「
$ busi_title
」;'如果用戶ID發生變化。即。 '$ current_user = 0;如果($ current_user!= $ userx){$ page_owner。= ...; $ current_user = $ userx;' – Sean 2014-12-04 20:25:27
感謝您的答覆。是,user_id更改,只是$ page_owner打印出來。我做了你說的,但仍然得到相同的結果 – Coder 2014-12-04 20:40:06
**警告**:當使用'mysqli'您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值來實現此目的,因爲您將創建嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman 2014-12-04 21:15:36