通过 PDO 按关键字过滤 PHP
Filter by keywords via PDO PHP
我想知道是否有一种方法可以通过关键字匹配来过滤结果,如果有最多 2 个关键字,结果就会显示?
不久...我想通过使用关键字($row['TAG'])来做"YOU MAY BE INTERESTING"...唯一的条件是所有关键字相似或不同到2个字。
TIA.
$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u,
notebook, laptop, mac, **- 10 keyword**
V $words_tag(2)=apple, air, macbook, 16ghz, i5250u, notebook,
laptop, mac, -8/10 keywords
V $words_tag(3)= mjvm2ll, air, macbook, 16ghz, i5250u, notebook, laptop, mac, -8/10 keywords
X $words_tag(4)= mjvm2ll, air, 16ghz, i5250u, notebook, laptop, mac,
-7/10 keywords
我的代码:
$words_tag=$row['TAG'];
$arr = substr_count($words_tag, ",");
//$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u, notebook, laptop, mac,
$search = $words_tag;
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$words = explode(',', $search);
$words_condition = array();
$arguments = array();
$i='1';
foreach ($words as $word) {
$words_condition[] = 'TAG LIKE ?';
$arguments[] = '%'.$word.'%';
$i++;
if($i=> $arr-2) break();
}
$query = $db->prepare("SELECT * FROM `post` WHERE ".implode(" OR ", $words_condition)." ORDER BY ID DESC");
$query->execute($arguments);
if($query->rowCount()=='0'){
}else{
echo 'YOU MAY BE INTSETENTING...';
}
不要使用 OR
来组合 LIKE
条件,而是使用 +
。匹配的时候条件是1
,不匹配的时候是0
,所以总数就是匹配的关键词个数。然后,您可以将此值与您对匹配关键字数量的限制进行比较。
$query = $db->prepare("SELECT * FROM `post`
WHERE ".implode(" + ", $words_condition)." BETWEEN 1 AND 2
ORDER BY ID DESC");
我想知道是否有一种方法可以通过关键字匹配来过滤结果,如果有最多 2 个关键字,结果就会显示?
不久...我想通过使用关键字($row['TAG'])来做"YOU MAY BE INTERESTING"...唯一的条件是所有关键字相似或不同到2个字。 TIA.
$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u,
notebook, laptop, mac, **- 10 keyword**
V $words_tag(2)=apple, air, macbook, 16ghz, i5250u, notebook, laptop, mac, -8/10 keywords
V $words_tag(3)= mjvm2ll, air, macbook, 16ghz, i5250u, notebook, laptop, mac, -8/10 keywords
X $words_tag(4)= mjvm2ll, air, 16ghz, i5250u, notebook, laptop, mac, -7/10 keywords
我的代码:
$words_tag=$row['TAG'];
$arr = substr_count($words_tag, ",");
//$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u, notebook, laptop, mac,
$search = $words_tag;
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$words = explode(',', $search);
$words_condition = array();
$arguments = array();
$i='1';
foreach ($words as $word) {
$words_condition[] = 'TAG LIKE ?';
$arguments[] = '%'.$word.'%';
$i++;
if($i=> $arr-2) break();
}
$query = $db->prepare("SELECT * FROM `post` WHERE ".implode(" OR ", $words_condition)." ORDER BY ID DESC");
$query->execute($arguments);
if($query->rowCount()=='0'){
}else{
echo 'YOU MAY BE INTSETENTING...';
}
不要使用 OR
来组合 LIKE
条件,而是使用 +
。匹配的时候条件是1
,不匹配的时候是0
,所以总数就是匹配的关键词个数。然后,您可以将此值与您对匹配关键字数量的限制进行比较。
$query = $db->prepare("SELECT * FROM `post`
WHERE ".implode(" + ", $words_condition)." BETWEEN 1 AND 2
ORDER BY ID DESC");