通常,在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
有关如何执行此操作的任何帮助或想法...提前致谢:)
答案 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);