我正在尝试显示 3 个与此事件名称相似的事件名称。
目前构建此代码返回FALSE
,我不明白为什么:
调用(我可以看到这里没问题):
// get 3 similar events (by name)
$nameArray = explode(" ", strtolower($name));
var_dump($similarEvents = $event->getSimilarEvents($event_id, $nameArray));
获取名称相似的 3 个事件的方法
public function getSimilarEvents($event_id, $nameArray){
$uniqueWords = array();
// list of common words we dont want to search by
$commonWords = array('one');
// Build array of words that dont match common words
$uniqueWords = array_diff($nameArray, $commonWords);
// add each AND per word in array
foreach($uniqueWords AS $word){
$x++;
if($x==1){
$like .= "event_name LIKE %$word% ";
}else{
$like .= " AND event_name LIKE %$word%";
}
}
// build start of mysql query
$query = "SELECT event_id, event_name FROM adrenaline_junkies_uk_events WHERE ? AND event_id <> ? LIMIT 3";
$stmt = $this->dbh->prepare($query);
$stmt->bindParam(1, $like, PDO::PARAM_STR);
$stmt->bindValue(2, $event_id, PDO::PARAM_INT);
$stmt->execute();
var_dump($query);
var_dump($like);
if($stmt->rowCount() > 0){
return $stmt->fetchAll();
}else{
return FALSE;
}
}
回报var_dump
:_$query
字符串(95)“从 adrenaline_junkies_uk_events 中选择 event_id,event_name 在哪里?和 event_id <>?限制 3”
回报var_dump
:_$like
string(82) "event_name LIKE %mountain% AND event_name LIKE %test% AND event_name LIKE %event%"
FALSE
当它应该返回另一个具有相似名称的事件时,该方法正在返回。这肯定存在于数据库中。
编辑:
第一次活动标题:
人与山
第二个事件的标题
山地测试活动一
如您所见,它应该返回另一个事件,因为它们共享单词mountain
。
谢谢