Моя таблица базы данных MySQL содержит 2510 записей. Когда я пытаюсь найти строку в столбце, используя полнотекстовый поиск, иногда я не получаю никаких результатов. Просто пустая таблица HTML.
Например, я ищу автора «Питер Шмидт». Если я ищу «Питер», я получаю правильного автора, но если я ищу «Шмидта», в таблице html отображаются другие авторы, но не правильный. Авторская колонка состоит из «фамилия, имя» (Шмидт, Питер).
Это часть моего кода:
$author = mysql_real_escape_string($_GET['author']);
$sql = "SELECT * FROM books WHERE MATCH(author) AGAINST ('$author' IN BOOLEAN MODE)";
$query = mysql_query($sql);
if (!$query) {
echo 'We cannot find the author you are searching for. Please try again.';
echo '<a href="'.$_SERVER['PHP_SELF'].'" class="back" style="margin:0;" title="Go back">» Go back</a>';
} else {
echo '<p>These authors match your query:</p><table>'
while ($result = mysql_fetch_array($query)) {
echo '<tr><td>'.$result['author'].'</td></tr>';
}
echo '</table>'
}
Что вызывает эту проблему?
Старайтесь не использовать совпадение BOOLEAN MODE, если вы не знаете синтаксис для этого. Также проверьте правильность кодирования в php / mysql-соединении:
<?php
mb_internal_encoding("UTF-8");
mysql_query("SET character_set_client = utf8;");
mysql_query("SET character_set_results = utf8;");
mysql_query("SET collation_connection = utf8_general_ci;");
$author = mysql_real_escape_string($_GET['author']);
$sql = "SELECT * FROM books WHERE author LIKE '%$author%'";
$query = mysql_query($sql);
if (!$query) {
echo 'We cannot find the author you are searching for. Please try again.';
echo '<a href="'.$_SERVER['PHP_SELF'].'" class="back" style="margin:0;" title="Go back">» Go back</a>';
} else {
echo '<p>These authors match your query:</p><table>'
while ($result = mysql_fetch_assoc($query)) {
echo '<tr><td>'.$result['author'].'</td></tr>';
}
echo '</table>'
}
?>
Других решений пока нет …