Поиск phpbb 'topic_title' через MYSQL php, но точное совпадение не работает - PullRequest
1 голос
/ 06 апреля 2010
$sql = sprintf( "SELECT topic_title 
                   FROM `phpbb_topics` 
                  WHERE `topic_title` LIKE '%%%s%%' LIMIT 20"
               , mysql_real_escape_string('match this title')
              );

который я запускаю этот запрос в phpMyAdmin результаты: (правильно)

match this title
match this title 002

Но когда я запускаю тот же самый запрос MYSQL в PHP, я получаю: (неверно)

match this title 002

Я также попробовал MATCH AGAINST с тем же результатом с php и phpMyAdmin:

$sql = "SELECT topic_title 
          FROM phpbb_topics 
         WHERE MATCH (topic_title) 
               AGAINST('match this title' IN BOOLEAN MODE)";

Весь блок кода, который я использую для поиска:

mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("phpbb") or die(mysql_error());         
$query = "match this title";
$query = "SELECT topic_title 
    FROM phpbb_topics 
    WHERE MATCH (topic_title) 
          AGAINST('$query' IN BOOLEAN MODE)"; 
// Doesn't work (these 2 both give the same result "match this title 002" and no the "match this title")
// $query = "SELECT * FROM `phpbb_topics` 
//    WHERE `topic_title` 
//    LIKE '%$query%' 
//    LIMIT 0, 30 "; // Doesn't work
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());

while($row = mysql_fetch_array($result)){
    $topic_title = $row['topic_title'];
    echo "$topic_title";
}

Есть идеи, что я делаю не так?

Я искал повсюду и не нашел никакой помощи: (

1 Ответ

1 голос
/ 06 апреля 2010

Проблема в том, что после выполнения запроса вы выбираете первую строку, ничего не делаете с ней, вводите цикл, выбирая вторую строку, и начинаете печатать результаты ..

Если вы удалите первый $row = mysql_fetch_array($result), (сразу после $result = mysql_query($query) or die(mysql_error());) у вас все будет хорошо.

Еще один комментарий; Если вы выводите переменную, вам не нужно помещать вокруг нее какие-либо кавычки. И так, как вы делаете это сейчас, вы не получите новую строку между результатами, поэтому вы можете изменить эту строку на echo $topic_title . "<br>";

...