2012-02-22 5 views
2

mysqlからmysqli prepared statementsに自分のコードを変更しようとしています。私は現在、データベースに電子メールがあるかどうかを確認するために現在動作しているコードをどのように適応させるのかよくわかりません。以下は私が現在使っているコードです。これをプリペアドステートメントに変更して同じ結果を得るにはどうすればよいですか?同様にあなたを助けるかもしれない。このリンク準備された文を使用して電子メールがすでにデータベースに入っているかどうか確認してください。

// create mysqli object 
$mysqli = new mysqli(/* fill in your connection info here */); 

$email = $_POST['email']; // might want to validate and sanitize this first before passing to database... 

// set query 
$query = "SELECT COUNT(*) FROM users WHERE email = ?" 

// prepare the query, bind the variable and execute 
$stmt = $mysqli->prepare($query); 
$stmt->bind_param($email); 
$stmt->execute() 

// grab the result 
$stmt->store_result(); 

// get the count 
$numRows = $stmt->num_rows(); 

if($numRows) 
{ 
    echo "<p class='red'>Email is already registered with us</p>"; 
} 
else 
{ 
    // .... 
} 

//if email is equal to an email already in the database, display an error message 

if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE email = '".mysql_real_escape_string($_POST['email'])."'"))) 
{ 
    echo "<p class='red'>Email is already registered with us</p>"; 
} else { 
    // missing code? 
} 
+0

SOにようこそ。あなたの投稿を私の能力の最大限に再フォーマットしました。マークアップに慣れるにはFAQを必ず読んでください。おそらくあなたが投稿したかったコードがありません。 – pmr

答えて

0
+0

ありがとうございますが、エラーが発生しました:致命的なエラー:非オブジェクト上のメンバー関数bind_param()を呼び出す – user1227124

+0

OKソート済み、(*) – user1227124

+0

$ stmt-> bind_param($ email ) 'は' $ stmt-> bind_param( 's'、$ email) 'でなければなりません。 –

関連する問題