2010-07-25 8 views
1

Heres mon codeMySQL sélectionner des œuvres dans phpMyAdmin, mais mon PHP retourne aucune ligne avec le même appel

<?php 
session_start(); 

include('config.php'); 
if(isset($_GET['search_word'])) 
{ 
    // echo $_GET['search_word'] . '<br />'; // debugging 
    $search_word = $_GET['search_word']; 
    $search_word = mysql_escape_string($search_word); 
    $search_word_fix = str_replace(" ","%",$search_word); 

    $query = "SELECT * FROM article WHERE article_title LIKE '%" . $search_word . "%' AND article_live = '1' ORDER BY article_id DESC"; 
    // echo $query . '<br />'; // debugging 

    $sql = mysql_query($query); 
    $count = mysql_num_rows($sql); 
    // echo $count . '<br />'; // debugging 
    // echo mysql_num_rows($sql) . '<br />'; // debugging 
    if($count > 0) 
    { 
     while($row=mysql_fetch_array($sql)) 
     { 
      $msg=$row['article_title']; 
      $bold_word='<b>'.$search_word.'</b>'; 
      $final_msg = str_ireplace($search_word, $bold_word, $msg); 

      echo $final_msg; 
     } 
    } 
    else 
    { 
     echo "No Results"; 
    } 
}?> 

Quelqu'un peut-il voir un problème avec elle? Je ne peux pas choisir ce qui ne fonctionne pas avec ce script et je l'ai regardé pendant un moment. Il ne le fait jamais à la boucle de WHILE seulement le "aucun résultat" et le compte revient vide quand je décommente mon débogage.

+0

Alors, où dans le script vous connectez-vous à la base de données? – quantumSoup

+0

D'ailleurs, vous devriez activer le signalement d'erreurs; ajouter cette ligne au début du script 'error_reporting (E_ALL)', pour que vous puissiez voir si quelque chose ne va pas. – quantumSoup

Répondre

3

Le nombre renvoyé vide signifie que votre requête a échoué pour une raison quelconque.

  • Vous vous connectez correctement à la base de données? Essayez d'utiliser mysql_error() juste après votre requête:

    $error_msg = mysql_error(); 
    
  • Utilisez mysql_real_escape_string() au lieu de mysql_escape_string() - il respecte le jeu de caractères de sorte que vous n'avez pas de problèmes UTF8

Si vous l'utilisez publiquement, vous souhaiterez peut-être apprendre à utiliser des liaisons pour éliminer la possibilité d'injection SQL via a library like PDO.

Here's a pretty good tutorial/introduction to PDO explaining why it's important!

+0

vous aviez raison mysql_error(); a souligné que le problème était un mauvais chemin d'inclusion donc il ne pouvait pas se connecter à la base de données. et merci pour le tutoriel je vais jeter un coup d'oeil. – Latency

Questions connexes