我的搜索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个问题没有任何明显的答案。当你问问题时,人们会花费宝贵的时间帮助你摆脱困境。通过标记适当的答案作为正确答案来奖励他们而且,我观察到的是,你没有**勇气**回复/回复正在帮助你的人。这种行为在世界任何地方都是不可接受的。 –