2015-05-14 97 views
0

Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\registration2.php檢查是否在數據庫

存在於這個代碼的價值:

<form method="post" action=""> 
    <label>Email</label><input type="text" name="email"/><br> 
    <label>Heslo</label><input type="password" name="password"/><br> 
    <label>Heslo znovu</label><input type="password" name="passwordagain"/><br> 
    <label>Nickname</label><input type="text" name="nickname"/><br> 
    <input type="submit" name="submit"/> 
</form> 
if(isset($_POST['nickname'])){ 
    $nickname= $_POST['nickname']; 

    $sql4 = "SELECT nickname FROM registration WHERE nickname = :nickname"; 
    $sql4->execute(array(":nickname"=>$nickname)); 
    if($sql4->rowCount() > 0){ 
     echo "toto jméno již existuje"; 
    } 

} 
+0

哪裏是你的數據庫連接?並執行與數據庫連接鏈接變量托架傳遞查詢作爲參數的工作?你也混合綁定和執行。 –

+1

'$ sql4'是一個字符串,而不是一個對象。你可以在你的代碼片段中定義它。 –

+0

那麼當sql4是一個字符串時我要做什麼 – StarScrime

回答

0

您正試圖調用一個字符串,它是不是一個對象的方法,因此,您的錯誤。

首先你需要準備你的SQL查詢,然後執行它。

我假定你的PDO對象被稱爲$dbh,換成你自己吧:

if(isset($_POST['nickname'])){ 
    $nickname= $_POST['nickname']; 

    $sql4 = $dbh->prepare("SELECT nickname FROM registration WHERE nickname = :nickname"); 
    $sql4->execute(array(":nickname"=>$nickname)); 
    if($sql4->rowCount() > 0){ 
     echo "toto jméno již existuje"; 
    } 

}