2013-10-16 33 views
-1

被打驗證碼整天得到了大部分的bug敲定了但我現在收到此錯誤消息現在我得到致命錯誤:調用一個成員函數準備()非對象上我的PHP形式

Fatal error: Call to a member function prepare() on a non-object in /home/jsnow/public_html/registration.php on line 26

這裏是我的代碼:內register(),沒有定義

<?php 

if(isset($_POST['username']) && isset($_POST['password'])) 
{ 
$db =connect('********','*********'); 
if($db!=false) 
{ 
    register($db); 
    echo "User registered"; 
} 

} 

function connect($dbuser,$dbpassword) 
{ 
    try{ 
     $db = new PDO('mysql:host=localhost;dbname=jsnow_login', '*******' , '*********'); 
     return $db; 
    }catch(PDOException $e){ 
     echo $e; 
     return false;} 
} 

function register($db) 
{ 
    $result_set = $pdo->prepare("INSERT INTO `users` (`username`, `password`) 
          VALUES (:username, :password)"); 
$result_set->execute(array(
':username' => $username, ':password' => $password 
)); 

} 




?> 


<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
<form action="http://vps8383.***********.com/~jsnow/registration.php" method="post"> 
username:<input type="text" name="username"/> 
password:<input type="password" name="password"/> 
email<input type="text" name="e_mail"/> 
<input type="submit"/> 

</form> 


</body> 
</html> 
+0

'$ username'和'$ password'傳遞給register()函數在哪裏?並且該函數中的$ pdo'應該是'$ db' –

+0

這不應該是'$ result_set = $ db-> prepare'的影響嗎? –

+0

評論和答案一樣好;-)你真的需要注意這些,他們是「無價的」 –

回答

1

$pdo。改用以下內容:

$result_set = $db->prepare("INSERT INTO `users` (`username`, `password`) 
         VALUES (:username, :password)"); 

關於$sername$password變量的函數沒有得到初始化,你的函數定義修改爲:

function register($db,$username,$password) 

,並調用它像這樣:

register($db,$_POST['username'],$_POST['password']); 
+0

你先生是我的英雄作品完美 –

+0

@JohnSnow因此[我的原創評論](http://stackoverflow.com/questions/19413355/now-i-am-getting-fatal-error-call-toa-a-member- function-prepare-on-a-non-objec#comment28778097_19413355);-) –

+0

對不起,@Fred -ii-一個noob並沒有捕獲你的提交,但我說的太快了代碼的作品和錯誤現在沒有了,但它不是現在更新我的數據庫 –

相關問題