PHP句子搜索 - 在一个句子中搜索关键字(MySQL)

时间:2012-09-04 14:01:51

标签: php mysql search keyword sentence

通常,在MySQL字段中搜索关键字,例如;

[tbl_hp] id,title

1, Harry Potter and the Philosopher's Stone
2, Harry Potter and the Chamber of Secrets
3, Harry Potter and the Prisoner of Azkaban
4, Harry Potter and the Goblet of Fire
5, Harry Potter and the Order of the Phoenix
6, Harry Potter and the Half-Blood Prince
7, Harry Potter and the Deathly Hallows

PHP

$keyword = "Philosopher";
$keyword = "Harry Potter";

SQL

SELECT `id` FROM `tbl_hp` WHERE `title` LIKE '%" . $keyword . "%';

然后是结果;

"Philosopher" => 1
"Harry Potter" => 1,2,3,4,5,6,7

但是怎么做?

[tbl_hp_keywords] id,关键字

1, philosopher
2, chamber
3, azkaban
4, goblet
5, phoenix
6, prince
7, hallows
8, prisoner
9, Prisoner of Azkaban
10, Half-Blood Prince

PHP

$keyword = "Harry Potter and the Chamber of Secrets";
$keyword = "Harry Potter and the Prisoner of Azkaban";
$keyword = "Harry Potter and the Half-Blood Prince";

然后是结果;

"Harry Potter and the Chamber of Secrets" => 2
"Harry Potter and the Prisoner of Azkaban" => 3,8,9 => or even better result is 9
"Harry Potter and the Half-Blood Prince" => 6,10 => or even better resurt is 10

有关如何执行此操作的任何帮助或想法...提前致谢:)

1 个答案:

答案 0 :(得分:0)

<?php
$keywords = explode(' ', $keyword);
foreach($keywords AS $key){
    $sql = "SELECT id FROM tbl_hp_keywords WHERE keyword = '$key'";
    $query = mysql_query($sql);
    while($result = mysql_fetch_array($query)){
        $ids[] =$result['id'];
    }
}
$answer[$keyword] = implode(',', $ids);

或试试这个

$keyword = 'Harry Potter and the Chamber of Secrets';
$keywords = explode(' ', $keyword);
$modifiedKeyword = implode("', '", $keywords);
$sql = "SELECT id FROM tbl_hp_keywords WHERE keyword IN ('$modifiedKeyword')";
try {
    $hostname = 'servername';
    $dbname = 'dbname';
    $username = 'username';
    $pw = "password";
    $pdo = new PDO("mssql:host=$hostname;dbname=$dbname", $username, $pw);
} catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
}
$query = $pdo->prepare($sql);
$query->execute();

for ($i = 0; $row = $query->fetch(); $i++) {
    $ids[] = $row['id'];
}

unset($pdo);
unset($query);