我有一个来自用户的查询要在mysql数据库中搜索
<input type="text" name="query_textbox"><input type="submit" name="search_button">
<?php
if (isset($_GET['search_button']))
{
$query = $_GET['query_textbox'];
$command = "SELECT * FROM `table` WHERE `ProteinName` LIKE '%$query%';";
$result = mysql_query($command);
echo $result;
}
?>
当我在文本框中输入“人类”时,它将起作用。但是,当我搜索“人类蛋白质”时,它会显示0条结果。
现在的问题是“如果我搜索包含“人类蛋白质”等空格的查询,它应该向我显示“人类蛋白质”,“人类”和“蛋白质”的结果。该怎么做?
最佳答案
您可以执行以下操作:
$query = $_GET['query_textbox'];
// explode the query by space (ie "human protein" => "human" + "protein")
$keywords = preg_split("#\s+#", $query, -1, PREG_SPLIT_NO_EMPTY);
// combine the keywords into a string (ie "human" + "protein" => "'%human%' OR '%protein%'")
$condition = "'%" . implode("%' OR '%", $keywords) . "%'";
$command = "SELECT * FROM `table` WHERE `ProteinName` LIKE $condition;";