2013-08-03 17 views
-4

我測試用我的腳本登錄時,我得到一個錯誤錯誤與準備()函數PHP

Fatal error: Call to a member function prepare() on a non-object in/CMS/index.php on line 30

我檢查了30日線,並約於30日,但我看不出哪裏是錯誤:

$userp = $sql->prepare("SELECT user, passwd FROM users WHERE user = :username AND passwd = :password LIMIT 1"); 
    $userp->execute(array(
     'username' => $username, 
     'password' => $passwd 
     )); 

錯誤是我沒有聲明$ sql變量。 Mea culpa。

+1

你有問題,還是你只是給你的開發努力的現狀的報告? – spencer7593

回答

0

您需要檢查並確保在運行查詢之前$ sql正在創建爲PDO實例。如果連接失敗,那麼$ SQL將是無效的......檢查的好方法是這樣的:

$sql = null; 
try { 
    $sql = new PDO($dsn, $user, $password); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

if($sql instanceof PDO) 
{ 
    $userp = $sql->prepare("SELECT user, passwd FROM users WHERE user = :username AND    passwd = :password LIMIT 1"); 
    $userp->execute(array(
     'username' => $username, 
     'password' => $passwd 
    )); 
} 
else 
{ 
    // $Sql is null, and not an instance of PDO 
}