您好,我从Youtube教程获得了以下代码,如果我搜索仅存在于1列中的字符串,它就可以工作。如果我将搜索结果放在两个不同的列中,那么我就没有结果。 例如,如果Jack在第1列,Rabbit在第2列,如果我搜索" Jack Rabbit"然后我根本没有结果,如果我搜索"杰克"然后它起作用,同样适用于" Rabbit"。
我知道修复程序在下面的行中,但当我根据我搜索的stackoverflow上的其他帖子更改行时,我收到错误,因为他们的代码与我的有点不同。
$query = mysql_query("SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%' ") or die("Could not search!");
以下全部搜索代码
<?php
mysql_connect("localhost", "Name_Name", "Password") or die("Could not connect");
mysql_select_db("Name_Databse") or die("Could not find db!");
$output = ' ' ;
//collect
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", " ", $searchq);
$query = mysql_query("SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%' ") or die("Could not search!");
$count = mysql_num_rows($query);
if($count == 0) {
$output = 'There was no such results!';
}else{
while($row = mysql_fetch_array($query)){
$id = $row['id'];
$aHref = $row['aHref'];
$columnOne = $row['columnOne'];
$columnTwo = $row['columnTwo'];
$inputDiv = $row['inputDiv'];
$image = $row['image'];
$output .= '<a href="' . $aHref . '.html" class="link"> <div class="Poster">' . ' <div class="columnOne">' . $columnOne . ' </div> <div class="columnTwo">' . $columnTwo . ' </div> <div class="inputDiv">' . $inputDiv . ' </div> <div class="image"><img src="' . $image . '.jpg"/>' . '</div> </div></a>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title> Search </title>
<link rel='stylesheet' type='text/css' href='Styler.css'/>
</head>
<body>
<form action='search.php' method='post' style="margin: 0 0 25px;">
<input type='text' name='search' size='50' placeholder="Search here"/>
<input type='submit' value='Search' />
</form>
<?php print("$output"); ?>
</script>
</body>
</html>
答案 0 :(得分:3)
如何组合两列并进行搜索:
SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%' OR CONCAT_WS(' ', columnOne, columnTwo) LIKE '%$searchq%'
这只会在搜索“columnOne + [space] + columnTwo”时才有效。如果你想能够匹配他们输入的任何单词(即搜索“Jack W. Rabbit”仍然匹配),那么你将使用之前建议的爆炸方法。