2014-02-01 2 views
-1

Это код:запрос не работает над сценарием, но работает на PhpMyAdmin

$paramater = "@CityNameWithñ"; 

$stmt = $connection->prepare(" 
    SELECT `col1`,`col2` 
    FROM `table` 
    WHERE MATCH (`col3`,`col4`) 
    AGAINST (? IN BOOLEAN MODE) 
    AND `status` = 'a'"); 
$stmt->bind_param("s",$parameter); 
$stmt->execute(); 
$stmt->bind_result($r1,$r2); 
while($stmt->fetch()){ 
    var_dump($r1); 
} 

выше ничего не возвращает. Но если $parameter имеет значение, например, @CityName, он работает. Я думаю, что проблема ñ?

Я попробовал его в PhpMyAdmin

SELECT `col1`,`col2` 
    FROM `table` 
    WHERE MATCH (`col3`,`col4`) 
    AGAINST ('@CityNameWithñ' IN BOOLEAN MODE) 
    AND `status` = 'a' 

Он работает. Он вернул 980 результатов.

Любая идея, что заставляет его терпеть неудачу в моем запросе?

+0

Где код, в котором переменная MySQL @CityNameWithin устанавливается в PHP? Переменная MySQL, вероятно, не переносится, потому что соединение PHP MySQL отличается. – virmaior

+0

@virmaior a 'var_dump()' on '$ parameter' перед символом' bind_param' возвращает строку со значением '@ CityNameWithñ' и соединение в порядке. Снова, как упоминалось выше, скрипт работает, если значение '$ parameter' не имеет' - ', но ничего не возвращает, если оно имеет' ''. –

+0

Что такое кодировка соединений для вашего кода PHP vs phpmyadmin? – virmaior

ответ

0

После прочтения комментариев и еще нескольких поисков я выяснил, что проблема была в проблеме charset.

добавление $connection->set_charset("utf8") к скрипту после установления соединения mysqli.

Спасибо!

Смежные вопросы