2016-04-02 6 views
-1

メールがデータベースにすべて存在するかどうかを確認するときに問題があります。PDOでメールを確認する

<?php 
session_start(); 

include_once("connection.php"); 
$handler = new Connection; 
$handler = $handler->connect(); 

$email = $_POST['email']; 

$check = $handler->prepare("SELECT * FROM emailcollector WHERE email=':mail'"); 
$check->execute(array(':mail' => $email)); 


if($check->rowCount > 0){ 
    header("Location: yes.php"); 
}else{ 
    header("Location: no.php"); 
} 
?> 

私はデータベースにpdo接続を使用しています。私がコードを実行すると、それは存在しないと常に言います。私はちょっとこれに新しい。あなたのSQLで任意のヘルプ

+1

は引用符を削除し、ここで、 'メールを= 'を形成:=それは'電子メールになりmail'':mail' – Saty

+0

@Satyを、まだ – Denny123

+0

は動作しません。今何のエラーがありますか? – Saty

答えて

1

rowCountは機能であり、プロパティではありません。したがって、あなたはこのようにそれを呼び出す必要があり、()

if($check->rowCount() > 0){ 
2

ためのおかげで、値が文字列であっても、任意の引用符を必要としない':mail'

$check = $handler->prepare("SELECT * FROM emailcollector WHERE email=:mail"); 

PDOプレースホルダの前後に引用符を削除します。引用符を使用することによって、あなたは本質的に以下のことを行っています。 PDOStatement::rowCount()

SELECT * FROM emailcollector WHERE email="'[email protected]'" 
+0

試してみました...うまくいきません – Denny123

1

可能性のある問題:ほとんどのデータベースでは

、PDOStatementに:: rowCount()はSELECT文によって影響を受けた行数を返しません。代わりに、PDO :: query()を使用して、目的のSELECT文と同じ述部でSELECT COUNT(*)文を発行し、次にPDOStatement :: fetchColumn()を使用して返される行数を取得します。これにより、アプリケーションは正しい処理を実行できます。

+0

コードをどのように変更すればよいですか? – Denny123

+0

リンク先のドキュメントページを読むことができます。可能な解決法が示されている。 – Reversal