2016-05-20 4 views
0

UPDATE:MySQL полнотекстового seacrh с PDO не работает

К сожалению все, кажется, что я очень устал :) Я просто пропустил выполнить() часть :)


Я столкнулся с какой-то проблемой. Пожалуйста, смотрите ниже.

$searchTerm = 'chr*'; 

$sql = "SELECT user_id FROM user 
    WHERE MATCH (user_name) AGAINST (? IN BOOLEAN MODE)"; 

$statement = self::$replicaDB->prepare($sql); 
$statement->bindValue(1, $searchTerm); 
$db_data = $statement->fetchAll(PDO::FETCH_ASSOC); 

Этот запрос возвращает пустой список (без ошибок, не исключение)

Но если поместить поисковое слово в запросе непосредственно, то все работает нормально.

$sql = "SELECT user_id FROM user 
    WHERE MATCH (user_name) AGAINST ('chr*' IN BOOLEAN MODE)"; 

$statement = self::$replicaDB->query($sql); 
$db_data = $statement->fetchAll(PDO::FETCH_ASSOC); 

Что я делаю неправильно?

+0

Извините, все, это кажется, что я совсем устал :) Я просто пропустил execute() part :) – Observer

+0

Вы можете ответить на свой вопрос, если у кого-то будет такая же проблема в будущем. –

+0

Спасибо за подсказку :) – Observer

ответ

0

Вы теряете кавычки, когда привязываете свой параметр.

Делают это так:

$searchTerm = 'chr*'; 

$sql = "SELECT user_id FROM user 
    WHERE MATCH (user_name) AGAINST ('?' IN BOOLEAN MODE)"; 

$statement = self::$replicaDB->prepare($sql); 
$statement->bindValue(1, $searchTerm); 
$db_data = $statement->fetchAll(PDO::FETCH_ASSOC); 

или как этот

$searchTerm = '\'chr*\''; 

$sql = "SELECT user_id FROM user 
    WHERE MATCH (user_name) AGAINST (? IN BOOLEAN MODE)"; 

$statement = self::$replicaDB->prepare($sql); 
$statement->bindValue(1, $searchTerm); 
$db_data = $statement->fetchAll(PDO::FETCH_ASSOC); 
0

Извините все, кажется, что я очень устал :) Я просто пропустил выполнить() часть :)

Код должен быть:

$searchTerm = 'chr*'; 

$sql = "SELECT user_id FROM user 
WHERE MATCH (user_name) AGAINST (? IN BOOLEAN MODE)"; 

$statement = self::$replicaDB->prepare($sql); 
$statement->bindValue(1, $searchTerm); 
$statement->execute(); 
$db_data = $statement->fetchAll(PDO::FETCH_ASSOC); 
Смежные вопросы