2012-12-23 26 views
-3

PHP文件不顯示任何錯誤,但不顯示從MySQL數據庫獲取的數據。這是不是說,它不能連接到我不知道我怎麼這個時候打破了它的databaseso :( 搜索引擎 不顯示給出的數據

<body> 
    <h2>Search Engine</h2> 
    <form action='./search.php' method='get'> 
     <input type='text' name='k' size='50' value='<?php echo $_GET['k'] ?>' /> 
     <input type='submit' value='Search'/> 
    </form> 
     <hr /> 
    <?php 
     $k = $_GET['k']; 
     $terms = explode(" ", $k); 
     $query = "SELECT * FROM search WHERE "; 

     foreach ($terms as $each) 
     { 
      //.... 
     } 

     //connect 
     mysql_connect("localhost", "root", ""); 
     mysql_select_db("search"); 

     $query = mysql_query($query); 

     $num_rows = 0; 
     if ($query){ 
      while($row = mysql_fetch_assoc($query)){ 
       $id = $row['id']; 
       $title = $row['title']; 
       $description = $row['description']; 
       $k = $row['Keywords']; 
       $link = $row['link']; 
       echo "<h2><a href='$link'>$title</a></h2> 
       $description<br /><br />"; 
      } 
     } 
     else 
      echo "No results found for \"<b>$k</b>\""; 

     //disconnect 
     mysql_close(); 

    ?> 
</body> 
</html> 

然後,我有MySQL數據庫建立 Database

+0

的建議,爲獲得更好的可讀性改名變量: $ SQL = 「SELECT * FROM搜索WHERE」; – alditis

+0

然後:$ query = mysql_query($ sql); – alditis

+0

**警告!**您的代碼包含[SQL注入漏洞](http://en.wikipedia.org/wiki/SQL_injection) - 您將原始的,未過濾的,未經驗證的用戶輸入直接傳遞到SQL字符串中。請[切換到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli),以便您可以使用[帶有參數化查詢的預準備語句](http: //en.wikipedia.org/wiki/Prepared_statement)。 – Charles

回答

2

嘗試改變

$query = mysql_query($query); 

$query = mysql_query($query) or die(mysql_error()); 

,並看看會發生什麼

+0

好吧,我收到了這個回覆你說的話「你的SQL語法有錯誤;查看與你的MySQL服務器版本相對應的手冊,在第一行使用正確的語法」 – user1923297

+0

因此,你有一個錯誤某處。如果我沒有弄錯,那看起來就像你試圖根據foreach聲明綁定一樣。所以你可以做兩件事之一。將$ sql查詢放入foreach語句中並以此方式運行,或者需要將值添加到WHERE子句中。你只有在哪裏。它應該更像是WHERE search =?。但不要聽我的話 - 現在是凌晨3點20分,我很累。應該幫助你 – MrTechie