2017-08-25 115 views
-1

我有一個數據庫連接的腳本是爲什麼顯示pdo未定義?

<?php 

//$dsn ='mysql:dbname=medicare;host=localhost'; 
$me = "root"; 
$password =""; 

try{ 
$pdo = new PDO('mysql:host=localhost;dbname=medicare',$me,$password); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch(PDOException $e){ 
echo"Error!:".$e->getMessage()."<br>"; 
die(); 


} 

?> 

然後我有一個函數在db_operations類,它是

public static function insert_admin($name,$pass){ 
// require_once("/connect.php"); 
$security = "[email protected]/n/?"; 
$pass = md5($pass,PASSWORD_DEFAULT).$security; 
$sql = "INSERT INTO admin(username,password) VALUES(:username,:password)"; 

$stmt = $pdo->prepare($sql); (line 79) 
$stmt->bindParam(':username',$name,PDO::PARAM_STR); 
$stmt->bindParam(':password',$pass,PDO::PARAM_STR); 
$stmt->execute(); 

$pdo = null; 


} 

添加數據,但它已表現出

Notice: Undefined variable: pdo in F:\xampp\htdocs\medicare\Model\class_db_operations.php on line 79

Fatal error: Call to a member function prepare() on a non-object in F:\xampp\htdocs\medicare\Model\class_db_operations.php on line 79 someone please help.

+2

如果你想在那裏使用它,你需要把變量'$ pdo'傳遞給你的函數。 –

+0

你能幫我多一點更清楚的提示嗎? –

+0

你應該要求你的連接文件:require_once(__ CONNECTION_FILE_); – okante

回答

0

有當調用$pdo->prepare()時,定義爲$pdo,您需要將其作爲參數傳遞或使其在對象中可用一個屬性,並用另一種方法設置它。

+0

你會建議我一個有用的鏈接或例子,將清楚這個概念給我嗎? –

+0

我還沒有在PHP基礎知識中找到它,但它非常簡單:如果函數中沒有定義該變量,則不能在該函數中使用變量,無論是在代碼本身中,還是作爲參數傳遞如果你從屬性中訪問它,如果函數是一個對象方法,或者如果變量是在全局範圍中定義的,則使用關鍵字'global'。 – ksjohn

0
public static function insert_admin($name,$pass){ 
// require_once("/connect.php"); 
global $pdo; 
$security = "[email protected]/n/?"; 
$pass = md5($pass,PASSWORD_DEFAULT).$security; 
$sql = "INSERT INTO admin(username,password) VALUES(:username,:password)"; 

$stmt = $pdo->prepare($sql); (line 79) 
$stmt->bindParam(':username',$name,PDO::PARAM_STR); 
$stmt->bindParam(':password',$pass,PDO::PARAM_STR); 
$stmt->execute(); 

$pdo = null; 


} 

你爲什麼要在最後設置$ pdo爲null?

+0

謝謝。有用。 –

+0

謝謝。有用。 –