0

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;
   }
?>

テキストボックスに「human」を入力すると、機能します。しかし、「ヒトタンパク質」を検索すると、0件の結果が表示されます。ここでの質問は、「「ヒトタンパク質」のような空白を含むクエリを検索すると、「ヒトタンパク質」、「ヒト」、「タンパク質」の結果が表示されるはずです。これを行うにはどうすればよいですか。

4

2 に答える 2

2

あなたはこのようなことをすることができます:

$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;";
于 2013-02-06T06:22:38.460 に答える
-1
$query = $_GET['query_textbox'];

// explode the query by space (ie "human protein" => "human" + "protein")
$keywords = explode(" ", $query);

foreach($keywords as $key => $value){
    $condition[] = `ProteinName` LIKE "'%".$value."%'"
}

$cond_str = implode(' OR ', $condition);
$command = "SELECT * FROM `table` WHERE $cond_str;";
于 2013-02-06T06:37:58.043 に答える