2010-07-25 4 views
1

繼承人我的代碼MySQL的選擇phpMyAdmin的作品,但我的PHP不返回行與同一呼叫

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

任何人都可以看到一個問題呢?我無法挑選出與這個腳本無關的東西,而且我一直在盯着它。它永遠不會使WHILE循環只有「無結果」,並且當我取消註釋我的調試時,計數返回空白。

+0

那麼腳本中的哪個位置連接到數據庫? – quantumSoup 2010-07-25 16:46:15

+0

順便說一句,你應該打開錯誤報告;將此行添加到腳本'error_reporting(E_ALL)'的開頭,以便您可以查看是否有錯誤。 – quantumSoup 2010-07-25 16:47:41

回答

3

計數返回空白意味着您的查詢由於某種原因失敗。

  • 您是否正確連接到數據庫?嘗試使用mysql_error()查詢之後:

    $error_msg = mysql_error(); 
    
  • 使用mysql_real_escape_string()而不是函數mysql_escape_string() - 它尊重的字符集,讓你不必UTF8發出

如果你正在公開使用它,你可能想了解使用綁定來消除SQL注入的可能性via a library like PDO

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

+0

你是對的mysql_error();指出該問題是一個錯誤的包含路徑,所以無法連接到數據庫。並感謝您的教程,我會看看。 – Latency 2010-07-25 18:07:49

相關問題