如何在 mysql 中应用多词搜索
How to apply multy word search in mysql
我需要一些关于如何使我的 php 脚本看起来不仅仅是 1 个单词或多个单词的要点(John Doe)。目前我的脚本只能从指向的 table 中找到第一个词 "John"。这是我的脚本:
$query = $_GET['query'];
$min_length = 1;
if (strlen($query) >= $min_length) {
$query = htmlspecialchars($query);
$query = mysql_real_escape_string($query);
$raw_results = mysql_query(
"SELECT * FROM filmi WHERE (`title` LIKE '%".$query."%')
OR (`description` LIKE '%".$query."%') OR (`nomer` LIKE '%".$query."%')"
) or die(mysql_error());
if (mysql_num_rows($raw_results) > 0) {
while ($results = mysql_fetch_array($raw_results)) {
echo "
print results
";
}
} else {
echo "No results";
}
} else {
echo "Minimum length is " . $min_length;
}
使用这段代码,我添加了新行。
这基本上是添加通配符 % 来代替 space,这样它将修改现有查询并向其添加通配符。这样它就可以找到包含给定搜索查询中所有单词的所有记录。
<?php
$query = $_GET['query'];
$min_length = 1;
if(strlen($query) >= $min_length){
$query = htmlspecialchars($query);
$query = mysql_real_escape_string($query);
//added new line ################
$query = str_replace(' ', '%', $query);
$raw_results = mysql_query("SELECT * FROM filmi
WHERE (`title` LIKE '%".$query."%') OR (`description` LIKE '%".$query."%') OR (`nomer` LIKE '%".$query."%')") or die(mysql_error());
if(mysql_num_rows($raw_results) > 0){
while($results = mysql_fetch_array($raw_results)){
echo "
print results
";
}
}
else{
echo "No results";
}
}
else{
echo "Minimum length is ".$min_length;
} ?>
我需要一些关于如何使我的 php 脚本看起来不仅仅是 1 个单词或多个单词的要点(John Doe)。目前我的脚本只能从指向的 table 中找到第一个词 "John"。这是我的脚本:
$query = $_GET['query'];
$min_length = 1;
if (strlen($query) >= $min_length) {
$query = htmlspecialchars($query);
$query = mysql_real_escape_string($query);
$raw_results = mysql_query(
"SELECT * FROM filmi WHERE (`title` LIKE '%".$query."%')
OR (`description` LIKE '%".$query."%') OR (`nomer` LIKE '%".$query."%')"
) or die(mysql_error());
if (mysql_num_rows($raw_results) > 0) {
while ($results = mysql_fetch_array($raw_results)) {
echo "
print results
";
}
} else {
echo "No results";
}
} else {
echo "Minimum length is " . $min_length;
}
使用这段代码,我添加了新行。
这基本上是添加通配符 % 来代替 space,这样它将修改现有查询并向其添加通配符。这样它就可以找到包含给定搜索查询中所有单词的所有记录。
<?php
$query = $_GET['query'];
$min_length = 1;
if(strlen($query) >= $min_length){
$query = htmlspecialchars($query);
$query = mysql_real_escape_string($query);
//added new line ################
$query = str_replace(' ', '%', $query);
$raw_results = mysql_query("SELECT * FROM filmi
WHERE (`title` LIKE '%".$query."%') OR (`description` LIKE '%".$query."%') OR (`nomer` LIKE '%".$query."%')") or die(mysql_error());
if(mysql_num_rows($raw_results) > 0){
while($results = mysql_fetch_array($raw_results)){
echo "
print results
";
}
}
else{
echo "No results";
}
}
else{
echo "Minimum length is ".$min_length;
} ?>