2012-06-11 55 views
0

我從教程中選取了該代碼並對其進行了編輯,使其適合我的需要。致命錯誤,未找到類

<?php 
//if we got something through $_POST 
if (isset($_POST['search'])) { 
    // here you would normally include some database connection 
    include('config2.php'); 
    $db = new db(); 
    // never trust what user wrote! We must ALWAYS sanitize user input 
    $word = mysql_real_escape_string($_POST['search']); 
    // build your search query to the database 
    $sql = "SELECT name FROM $tbl_name WHERE name LIKE '%" . $word . "%'"; 
    // get results 
    $row = $db->select_list($sql); 
    if(count($row)) { 
     $end_result = ''; 
     foreach($row as $r) { 
      $result   = $r['title']; 
      // we will use this to bold the search word in result 
      $bold   = '<span class="found">' . $word . '</span>'; 
      $end_result  .= '<li>' . str_ireplace($word, $bold, $result) . '</li>'; 
     } 
     echo $end_result; 
    } else { 
     echo '<li>No results found</li>'; 
    } 
} 
?> 

當我運行代碼,我收到此錯誤:

Fatal error: Class 'db' not found in /home/peltdyou/public_html/do_search.php on line 6 

我很新的PHP所以任何人都可以擺脫一些光照射到我的問題..

UPDATE:

<?php 

    class db { 

    function __construct() 
    { 
     global $dbh; 
     if (!is_null($dbh)) return; 
     $dbh = mysql_pconnect(DB_HOST, DB_USER, DB_PASSWORD); 
     mysql_select_db(DB_NAME); 
     mysql_query('SET NAMES utf8'); 
    } 

    function select_list($query) 
    { 
     $q = mysql_query($query); 
     if (!$q) return null; 
     $ret = array(); 
     while ($row = mysql_fetch_array($q, MYSQL_ASSOC)) { 
      array_push($ret, $row); 
     } 
     mysql_free_result($q); 
     return $ret; 
    } 
} 
?> 

這是db.php代碼..我想通過替換這個我自己的config2.php文件我可以讓它連接到我的數據庫。顯然不

+6

你忘了加入'db.php'嗎?你缺少一個定義類「db」的包含文件。 – Ryan

+0

PHP告訴你它找不到數據庫類。可以發現,這可能是因爲它沒有被自動加載到你的應用程序中,路徑錯誤或者它不存在。你如何包括數據庫類。你有其他的代碼,你可以發佈? – Haroon

+0

不知道你的配置文件包含什麼,但你*可以*包括兩個分開(也許應該,因爲它們在功能上不同) – GDP

回答

4

我想我找到了你使用的示例腳本,並在其中,他們說:

// here you would normally include some database connection 
include('db.php'); 

在這個例子中,db.php中沒有說明,假設你有這樣的數據庫文件,你會使用。稍微進一步的搜索,我發現這個database class,他們稱之爲「database.php」,但你可以很容易地將它用於你正在嘗試的代碼。

+0

謝謝!我發現他們在評論部分的教程中提到的db.php。它有更多我沒有包括的相關代碼。現在工作完美!謝謝 – user1449737

+1

請不要傳播'msyql_ *'函數相關的代碼。此外,你的答案是更多的評論比回答恕我直言。請保重。 – hakre

+8

它根本沒有評論 - 我解釋了丟失的文件以及它做了什麼,這是被問到的問題的原因。另外,並不是所有人都有重寫遺留代碼的奢望,所以我會繼續回答處於這種情況下的其他人,因爲我想幫助他們 - 恕我直言。 – GDP