Php 搜索功能不适用于多个单词
我一直在一个网站上使用这个搜索功能,它从发布的单词中提取单词并搜索数据库。Iv对其进行了修改,以便它可以接受通过GET发送给它的来自网站另一部分的内容。我遇到的问题是,当你发送多个词时,比如searchstock=一些搜索词,它将无法工作。如果我只发送一个单词,比如searchstock=word,使用GET,它工作得很好,只有在发送多个单词时,它才不工作,只在数据库中显示所有结果。奇怪的是,通过POST进行多词搜索效果很好Php 搜索功能不适用于多个单词,php,mysql,search,post,get,Php,Mysql,Search,Post,Get,我一直在一个网站上使用这个搜索功能,它从发布的单词中提取单词并搜索数据库。Iv对其进行了修改,以便它可以接受通过GET发送给它的来自网站另一部分的内容。我遇到的问题是,当你发送多个词时,比如searchstock=一些搜索词,它将无法工作。如果我只发送一个单词,比如searchstock=word,使用GET,它工作得很好,只有在发送多个单词时,它才不工作,只在数据库中显示所有结果。奇怪的是,通过POST进行多词搜索效果很好 // Begin Search Section >>
// Begin Search Section >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
function search($db) {
if (isset($_POST['searchstock'])){$words = $_POST['searchstock'];}
if (isset($_GET['searchstock'])){$words = $_GET['searchstock'];}
$searchQuery = ''; // search query is empty by default
$searchCondition = "(cultivar LIKE '%%' OR description LIKE '%%' OR species LIKE '%%' OR colour LIKE '%%')";
$searchFieldName = 'cultivar'; // name of the field to be searched
$searchFieldName2 = 'description';
$searchFieldName3 = 'species';
$searchFieldName4 = 'colour';
if(isset($_POST['searchstock']))
{ // check if a query was submitted
$searchQuery = trim($_POST['searchstock']); // getting rid of unnecessary white space
$searchTerms = explode(" ", $searchQuery); // Split the words
$searchCondition = "($searchFieldName LIKE '%" . implode("%' OR $searchFieldName LIKE '%", $searchTerms) . "%')"; // Forming the condition for the sql
$searchCondition .= " OR ($searchFieldName2 LIKE '%" . implode("%' OR $searchFieldName2 LIKE '%", $searchTerms) . "%')";
$searchCondition .= " OR ($searchFieldName3 LIKE '%" . implode("%' OR $searchFieldName3 LIKE '%", $searchTerms) . "%')";
$searchCondition .= " OR ($searchFieldName4 LIKE '%" . implode("%' OR $searchFieldName4 LIKE '%", $searchTerms) . "%')";
}
else if(isset($_GET['searchstock']))
{ // check if a query was submitted
$searchQuery = trim($_GET['searchstock']); // getting rid of unnecessary white space
$searchTerms = explode(" ", $searchQuery); // Split the words
$searchCondition = "($searchFieldName LIKE '%" . implode("%' OR $searchFieldName LIKE '%", $searchTerms) . "%')"; // Forming the condition for the sql
$searchCondition .= " OR ($searchFieldName2 LIKE '%" . implode("%' OR $searchFieldName2 LIKE '%", $searchTerms) . "%')";
$searchCondition .= " OR ($searchFieldName3 LIKE '%" . implode("%' OR $searchFieldName3 LIKE '%", $searchTerms) . "%')";
$searchCondition .= " OR ($searchFieldName4 LIKE '%" . implode("%' OR $searchFieldName4 LIKE '%", $searchTerms) . "%')";
}
// the rest is just database connection and retrieving the results
$sql = <<<SQL
SELECT * FROM stock WHERE $searchCondition;
SQL;
if(!$result = $db->query($sql)){ die('There was an error running the query [' . $db->error . ']');}
while($row = $result->fetch_assoc()){ //Show your results here eg: $row['field1']
$searchid = $row['id'];
$searchgenusid = $row['genusid'];
// End Search
// Search DB Function Start //
$sql4 = <<<SQL
SELECT * FROM `stock` WHERE `id` = '$searchid';
SQL;
if(!$stockresult = $db->query($sql4)){ die('There was an error running the query [' . $db->error . ']');}
while($stockrow = $stockresult->fetch_assoc()){
//开始搜索部分>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
函数搜索($db){
如果(isset($_POST['searchstock']){$words=$_POST['searchstock'];}
if(isset($_GET['searchstock']){$words=$_GET['searchstock'];}
$searchQuery='';//搜索查询默认为空
$searchCondition=“(类似于“%”的品种或类似于“%”的描述或类似于“%”的品种或类似于“%”的颜色”);
$searchFieldName='cular';//要搜索的字段的名称
$searchFieldName2='description';
$searchFieldName3=物种;
$searchFieldName4='color';
如果(isset($_POST['searchstock']))
{//检查是否已提交查询
$searchQuery=trim($_POST['searchstock']);//清除不必要的空白
$searchTerms=explode(“,$searchQuery);//拆分单词
$searchCondition=“($searchFieldName类似“%”。内爆(“%”或$searchFieldName类似“%”,$searchTerms)。“%”;//形成sql语句的条件
$searchCondition.=“或($searchFieldName2类似“%”。内爆(“%”或$searchFieldName2类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName3类似“%”。内爆(“%”或$searchFieldName3类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName4类似“%”。内爆(“%”或$searchFieldName4类似“%”,$searchTerms)。“%”);
}
else if(isset($\u GET['searchstock']))
{//检查是否已提交查询
$searchQuery=trim($\u GET['searchstock']);//清除不必要的空白
$searchTerms=explode(“,$searchQuery);//拆分单词
$searchCondition=“($searchFieldName类似“%”。内爆(“%”或$searchFieldName类似“%”,$searchTerms)。“%”;//形成sql语句的条件
$searchCondition.=“或($searchFieldName2类似“%”。内爆(“%”或$searchFieldName2类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName3类似“%”。内爆(“%”或$searchFieldName3类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName4类似“%”。内爆(“%”或$searchFieldName4类似“%”,$searchTerms)。“%”);
}
//剩下的只是数据库连接和检索结果
$sql=fetch_assoc()){//在此处显示结果,例如:$row['field1']
$searchid=$row['id'];
$searchgenusid=$row['genusid'];
//结束搜索
//搜索数据库功能启动//
$sql4=fetch_assoc()){
函数搜索($db){
$words=''
如果(isset($_POST['searchstock']){$words=$_POST['searchstock'];}
if(isset($_GET['searchstock']){$words=$_GET['searchstock'];}
如果(!空($words){
$searchQuery='';//搜索查询默认为空
$searchCondition=“(类似于“%”的品种或类似于“%”的描述或类似于“%”的品种或类似于“%”的颜色”);
$searchFieldName='cular';//要搜索的字段的名称
$searchFieldName2='description';
$searchFieldName3=物种;
$searchFieldName4='color';
$searchQuery=trim(words);//去除不必要的空白
$searchTerms=explode(“,$searchQuery);//拆分单词
$searchCondition=“($searchFieldName类似“%”。内爆(“%”或$searchFieldName类似“%”,$searchTerms)。“%”;//形成sql语句的条件
$searchCondition.=“或($searchFieldName2类似“%”。内爆(“%”或$searchFieldName2类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName3类似“%”。内爆(“%”或$searchFieldName3类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName4类似“%”。内爆(“%”或$searchFieldName4类似“%”,$searchTerms)。“%”);
//剩下的只是数据库连接和检索结果
$sql=fetch_assoc()){
$searchid=$row['id'];
$searchgenusid=$row['genusid'];
//如果它的工作在_POST上,那么它也应该在_GET上工作
//你想干什么就干什么
}
}
}
函数搜索($db){
$words=''
如果(isset($_POST['searchstock']){$words=$_POST['searchstock'];}
if(isset($_GET['searchstock']){$words=$_GET['searchstock'];}
如果(!空($words){
$searchQuery='';//搜索查询默认为空
$searchCondition=“(类似于“%”的品种或类似于“%”的描述或类似于“%”的品种或类似于“%”的颜色”);
$searchFieldName='cular';//要搜索的字段的名称
$searchFieldName2='description';
$searchFieldName3=物种;
$searchFieldName4='color';
$searchQuery=trim(words);//去除不必要的空白
$searchTerms=explode(“,$searchQuery);//拆分单词
$searchCondition=“($searchFieldName类似“%”。内爆(“%”或$searchFieldName类似“%”,$searchTerms)。“%”;//形成sql语句的条件
$searchCondition.=“或($searchFieldName2类似“%”。内爆(“%”或$searchFieldName2类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName3类似“%”。内爆(“%”或$searchFieldName3类似“%”,$searchTerms)。“%”);
$searchCondition.=“或($searchFieldName4类似“%”。内爆(“%”或$searchFieldName4类似“%”,$searchTerms)。“%”);
//剩下的只是数据库连接和检索结果
$sql=fetch_assoc()){
$searchid=
function search($db) {
$words=''
if (isset($_POST['searchstock'])){$words = $_POST['searchstock'];}
if (isset($_GET['searchstock'])){$words = $_GET['searchstock'];}
if (!empty($words){
$searchQuery = ''; // search query is empty by default
$searchCondition = "(cultivar LIKE '%%' OR description LIKE '%%' OR species LIKE '%%' OR colour LIKE '%%')";
$searchFieldName = 'cultivar'; // name of the field to be searched
$searchFieldName2 = 'description';
$searchFieldName3 = 'species';
$searchFieldName4 = 'colour';
$searchQuery = trim(words); // getting rid of unnecessary white space
$searchTerms = explode(" ", $searchQuery); // Split the words
$searchCondition = "($searchFieldName LIKE '%" . implode("%' OR $searchFieldName LIKE '%", $searchTerms) . "%')"; // Forming the condition for the sql
$searchCondition .= " OR ($searchFieldName2 LIKE '%" . implode("%' OR $searchFieldName2 LIKE '%", $searchTerms) . "%')";
$searchCondition .= " OR ($searchFieldName3 LIKE '%" . implode("%' OR $searchFieldName3 LIKE '%", $searchTerms) . "%')";
$searchCondition .= " OR ($searchFieldName4 LIKE '%" . implode("%' OR $searchFieldName4 LIKE '%", $searchTerms) . "%')";
// the rest is just database connection and retrieving the results
$sql = <<<SQL
SELECT * FROM stock WHERE $searchCondition;
SQL;
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
while($row = $result->fetch_assoc()){
$searchid = $row['id'];
$searchgenusid = $row['genusid'];
//if its work on _POST then should also work on _GET
//do what ever you want
}
}
}