像关键字一样搜索MySQL应该返回1个结果但返回false

时间:2013-09-27 13:44:52

标签: php mysql arrays

我正在尝试显示与此事件名称类似的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的{​​{1}}返回:

  

string(95)“SELECT event_id,event_name FROM   adrenaline_junkies_uk_events在哪里? AND event_id&lt;&gt; ?限制3“

$query的{​​{1}}返回:

  

string(82)“event_name LIKE%mountain%AND event_name LIKE%test%AND   event_name LIKE%event%“

该方法返回var_dump时应该返回另一个具有相似名称的事件。这肯定存在于数据库中。

编辑:

第一个事件的标题:

  

Man vs. Mountain

第二次活动的标题

  

山地考试活动一

正如您所看到的,它应该返回另一个事件,因为它们共享单词$like

由于

0 个答案:

没有答案