2010-04-06 9 views
1
$sql = sprintf("SELECT topic_title 
        FROM `phpbb_topics` 
        WHERE `topic_title` LIKE '%%%s%%' LIMIT 20" 
       , mysql_real_escape_string('match this title') 
      ); 

que je dirige cette requête dans phpMyAdmin les résultats sont les suivants: (correct)Recherche 'de TOPIC_TITLE' via MYSQL php phpbb, mais correspondance exacte ne fonctionne pas

match this title 
match this title 002 

Mais quand je lance ce même MYSQL requête en PHP je reçois: (incorrect)

match this title 002 

J'ai aussi essayé MATCH CONTRE avec le même résultat à la fois php et phpMyAdmin:

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

Le bloc entier code im en utilisant pour la recherche avec:

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"; 
} 

Toute idée de ce que je fais mal?

I'v été à la recherche dans tous les sens et ont trouvé à côté d'aucune aide :(

Répondre

1

Le problème est que lorsque vous exécutez votre requête vous allez chercher la première ligne, ne faites rien avec elle, entrer dans la boucle par aller chercher la deuxième ligne et commencer à imprimer les résultats ..

Si vous supprimez la première $row = mysql_fetch_array($result), (directement après $result = mysql_query($query) or die(mysql_error());), vous devriez être bien

un autre commentaire,. Si vous l'écho d'une variable que vous ne devez pas mettre Et de la façon dont vous le faites maintenant, vous n'obtiendrez pas une nouvelle ligne entre les résultats de sorte que vous pourriez vouloir changer cette ligne à echo $topic_title . "<br>";

+0

Ah ouais, juste obtenir un peu confus entre bash et php, comme avec bash vous avez presque toujours besoin des guillemets. Mais ça ne fait pas de mal d'avoir les citations à droite? J'ai également ajouté les balises
après avoir vu que 2 résultats sont arrivés en une longue phrase: P (Acclamations!) – Mint

+0

Non, les citations ne feront pas de mal. C'est une question de style. Je préfère mettre toutes mes variables hors des citations. –