1
要在我的腳本中修剪發言權,我決定使用1個PDO準備跨越一組預定義的表。 PDO在while
循環中執行,並且在while
循環內有一個foreach
來構建每個結果集的輸出。Foreach與PDO查詢嵌套在一個while循環中
這是搜索的代碼。該腳本當前搜索3個表格以獲得結果(通過while
迭代)。我們將它們稱爲表格a,b和c。對於經過測試的搜索,它在表a中找到2個結果,在表b中找到0個,在表c中找到1個。
儘管總共找到3個結果,但它只顯示2.一個來自表'a',一個來自表'c'。該腳本不是從表'a'中的第二次查找來構建結果。
我已經看了看,直到我的眼睛流血,並尋找可能是我錯了,我不知道。這個代碼有什麼問題的任何想法?
// --- Build an array of places to search
$tableArray = array("services", "webPages", "dsiu");
$tableCount = count($tableArray);
$count = "0";
$resCount = "0";
$result = "";
while ($tableCount > $count) {
// -- Search tables in the array for matches
$quotedString = $db->quote($searchString);
$qSQL = "SELECT title, ldesc, SUM(MATCH(title, sdesc, ldesc) AGAINST(:string IN BOOLEAN MODE)) AS score FROM ".$tableArray[$count]." WHERE MATCH (title, sdesc, ldesc) AGAINST (:string IN BOOLEAN MODE) ORDER BY score DESC";
$q = $db->prepare($qSQL);
$q->execute(array(':string'=>$quotedString));
// -- keep a count of the results
$rowCount = $q->rowCount();
if ($rowCount > 0) {
$resCount = $resCount + $rowCount;
// -- build result html
$html = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($html as $row) {
// --- Clean the results for display
$desc = cleanURL($row['ldesc']);
$desc = str_ireplace($searchString, '<b><font color="green">'.$searchString.'</font></b>', $desc);
$desc = substr($desc, 0, 300)."...";
$result .= "<font color='red'><b>".$row['title']."</b></font><br>".$desc."<br><br>";
}
}
$count++;
}
有點偏離主題:字段名稱和查詢本身看起來都很具體< - 爲什麼有多個表呢? – VolkerK
這是一個網站。該網站的不同元素在數據庫中分開。這是爲了讓訪問者搜索檢查結果的不同元素。最終所有元素都將被納入全網搜索。用戶可以從「提供的公司服務」,在線商店或「信息頁面」獲得結果,或選擇特定元素進行搜索。 – Sabyre
'$ html'中的表a有2個結果嗎? – dan08