我的搜索SQL當前檢索提交的文本以及多達17個類似的匹配。在表單輸入中輸入多個單詞並從數據庫中檢索相應的數據
我還需要相同的表單輸入來獲取多個單詞(用空格分隔),並通過完全匹配和非相似的方式檢索其相應的數據。
,這是我現在有 -
$word=$_POST['word'];
$word = explode(" ", $word);
$searchString = $whereClause = "";
foreach($words as $word){
$searchString .= " OR word_eng LIKE '%".$word."%'";
}
$whereClause = ($searchString != "") ? " WHERE ".preg_replace('/OR/',
'', $searchString, 1) : $whereClause;
$sql = "SELECT word_eng FROM words ".$whereClause." LIMIT 17 ";
echo $sql;
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["word_eng"];
}
我收到以下錯誤 -
Warning: Invalid argument supplied for foreach() in /home/foneti2/public_html/howjsay/201701/searchResult.php on line 10
和回聲$ SQL告訴我
SELECT word_eng FROM words LIMIT 17
這是越來越所有數據庫中我不想要的文字
UPDATE
所以感謝你們我已完成了工作,我需要,但我仍然有一個小問題 - 從他們不是正在被放入相同的順序檢索數據庫中檢索多個單詞時輸入框。有什麼建議麼?
$word=$_POST['word'];
$word3 = $_POST['word'];
$word = explode(";", $word);
$noOfWords = count($word);
$word2 = $word3;
if($noOfWords == 1){
$searchString = " word_eng LIKE '".$word3."%'";
}
else {
$searchString = $whereClause = "";
foreach($word as $word){
$searchString .= " OR word_eng LIKE '".$word."'";
echo $word;
}
}
$whereClause = ($searchString != "") ? " WHERE ".preg_replace('/OR/',
'', $searchString, 1) : $whereClause;
$sql = "SELECT word_eng FROM words ".$whereClause ." LIMIT 17 ";
三江源
檢查SQL'IN'子句。您還可以查看參數化查詢。 – bradbury9
編號'IN'在這種情況下不起作用 –
到目前爲止,您已經提出了10個問題。而且,你的10個問題沒有任何明顯的答案。當你問問題時,人們會花費寶貴的時間幫助你擺脫困境。通過標記適當的答案作爲正確答案來獎勵他們而且,我觀察到的是,你沒有**勇氣**回覆/回覆正在幫助你的人。這種行爲在世界任何地方都是不可接受的。 –