2012-10-14 31 views
0

您好我一直在學習本書中的php PHP Solutions Dynamic Web Design Made Easy,並進入了必須使用mysqli api來處理數據庫的部分。寫完連接功能,並運行該腳本,我得到這個錯誤:在嘗試讀取數據時調用非對象的成員函數query()

enter image description here

這是我的代碼:

function dbConnect($usertype , $connectionType = 'mysqli'){ 
    $host = 'localhost'; 
    $db = 'phpsols'; 
    if($usertype == 'read'){ 
     $user = 'psread'; 
     $pwd = 'Aleczandru1989'; 
    }elseif($usertype == 'write'){ 
     $user = 'aleczandru'; 
     $pwd = 'Aleczandru1989'; 
    }else{ 
     exit('Unrecognized type'); 
    } 

    if($connectionType == 'mysqli'){ 
     return new mysqli($host , $user , $pwd , $db) or die ('Cannot open database'); 
    }else{ 
     try{ 
      return new PDO("mysql:host=$host;dbname=$db", $user, $pwd); 
     } catch (PDOException $e){ 
      echo 'Cannot connect to database'; 
      exit; 
     } 
    } 
} 

$conn = dbConnect('read'); 
$sql = 'SELECT * FROM images'; 
$result = $conn->query($sql) or die(mysqli_error()); //Line 5 
$numRows = $result->num_rows; 

在這種情況下,5號線是指$結果= $ conn->查詢($ SQL )或死(mysqli_error());. 我在這裏做錯了什麼?

回答

1

您嘗試使用dbConnect('read')創建的$ conn對象;失敗。如果你想做一個var_dump($ conn);它可能表明它不是你的方面。該錯誤實際上是描述什麼是錯的。您試圖通過' - > query(..'on $ conn來訪問查詢函數,但$ conn必須是一個實際上具有查詢功能的對象引用,該對象將被創建的點是:

return new mysqli($host , $user , $pwd , $db) 

return new PDO("mysql:host=$host;dbname=$db", $user, $pwd); 

既然你呈現出不同的錯誤,那麼

or die ('Cannot open database'); 

我猜它實際上是在

鑼錯誤
return new PDO("mysql:host=$host;dbname=$db", $user, $pwd); 

你會發現異常。但是由於致命錯誤,echo聲明不再可見。你將不得不在那裏做一些調試!

我沒有PDO的經驗,但對象的構造似乎沒問題。 (但這可以幫助你:http://nl1.php.net/manual/en/class.pdo.php#84751)如果構造是好的,比檢查你的數據庫引擎是否實際運行:)?

相關問題