2017-07-09 3 views
0

登録ページを作成しようとしていますが、それを正常に作成していて1つの電子メールアカウントにのみ有効にして、一度だけ、電子メールと次回で、それはあなたがすでにメールアカウントに登録しているが、歩道に、私は致命的なエラー:キャッチされていないエラー:文字列iのメンバー関数bindParam()を呼び出す

が休閑地として休閑

Fatal error: Uncaught Error: Call to a member function bindParam() on string 
in C:\xampp\htdocs\sign\register.php:20 Stack trace: #0 {main} thrown in 
C:\xampp\htdocs\sign\register.php on line 20 

と私のPHPの登録コードがあると言ってエラーを得たというエラーを与える必要があります

<?php 
include('connection.php'); 
$form = $_POST; 
$username = $form['username']; 
$password = $form['password']; 
$repass = $form['repass']; 
$email = $form['email']; 
$date = $form['date']; 
$month = $form['month']; 
$year = $form['year']; 
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
echo "Invalid email please type a valid one"; 
} 
else{ 
if($username !='' && $password !='' && $repass!='' && $email !='' && 
$date!='' && $month !='' && $year !='') 
{ 
if($password == $repass) 
{ 
$query = "SELECT * FROM users where email = :email AND username = 
:username"; 
$query->bindParam(':username',$username); 
$query->bindParam(':email',$email); 
$count1 = $query->rowCount(); 
if($count> 0) 
{ 
    echo "soryy the email you are trying to register is already 
registered!"; 
} 
else{ 

$insert = $connection->prepare("INSERT INTO users 
(username,password,email,date,month,year) values (:username, :password, 
:email, :date, :month, :year)"); 
$insert->bindParam(':username',$username); 
$insert->bindParam(':password',$password); 
$insert->bindParam(':email',$email); 
$insert->bindParam(':date',$date); 
$insert->bindParam(':month',$month); 
$insert->bindParam(':year',$year); 
$out = $insert->execute(); 
if(isset($out)){ 
    echo "thankyou you have sucessfully registered"; 
} 
else{ 
    echo " sorry some error occured please try again!"; 
} 
} 
} 
else{ 
echo " passwords do not match"; 
die(); 
} 
} 
else{ 
echo " you have not filled the registration form completely so please it"; 
} 
} 
?> 

誰でも私の解決に手伝ってください。よろしくお願いします。

+0

'$($クエリ)を調製> = $ connection-を選択し、'して、 '$ SELECT - > bindParam( ':ユーザー名'、$ユーザ名)' –

答えて

0

準備されたステートメントでparamsをバインドする必要があります。選択クエリを使用fetchColumnから行の数をカウントするには

$query = $connection->prepare("SELECT * FROM users where email = :email AND username = 
:username"); 

EDIT

に選択クエリ文を変更します。また、$count1に値を割り当て、$countを使用しています。だから、あなたはステートメントを宣言し、直接使用して、このような何かを照会するのparamsを結合していない

$count = $query->fetchColumn(); 
if($count> 0) 
{ 
    echo "soryy the email you are trying to register is already 
registered!"; 
} 
+0

はありがとうは、回答にそれが働いてしまったが、それは持っていますそれを発行それは同じ電子メールを複数回登録しても、私が書いたコードによれば、それをしてはならない、ちょうど1つのアカウントをpaticular電子メールで作成しなければならない。それを –

+0

と数if()statmentがcount1に変更されましたが、どこにエラーが見つかりません –

+0

'$ query-> rowCount();'を '$ query-> fetchColumn()'に変更してから –

1

同じ変数名を使用します。

$select = $connection->prepare($query); 
$select->bindParam(':username',$username); 
関連する問題