2012-01-19 16 views
0

PHP/MYSQL配列のヘルプが必要です。MYSQLのPHP配列を選択

私はこのような文字列からユーザーを選択し、PHPスクリプトを持っている:[email protected], [email protected], [email protected]

私はいくつかのregistratedユーザーが自分の電子メール住所が存在しているとMySQLデータベースを持っています。私は別のテーブルに値を挿入する結果を得るために

$splitdata = for example: [email protected], [email protected], [email protected] 

$sql= mysql_query("SELECT * FROM `users` WHERE `email` IN ('".join("','", $splitdata)."')")  or die ('Error: '.mysql_error()); 
Then i get the result with a MYSQL fetch array: 

while($result = mysql_fetch_array($sql)) {  
    $email = $result['email']; 
... 

:スクリプトは、メールアドレスは、このような行に存在しているかどうかを確認する必要があります。しかし、行内で見つかる可能性がある電子メールのアドレスについてのみ。

私はテーブルで見つけられなかったユーザーの電子メール住所がに電子メールを送信したい:私は必要なもの

。ソフトウェアへの招待状。これは現在、見つけられたユーザーにしか機能しませんが、私は見つけられなかった人に別のアクションを実行する必要があります。

同じMYSQLフェッチにする必要はありません。私は、データベースに見つからなかったすべてのメールアドレスの別のmysqlフェッチを作成できます。私はいくつかのコード例やこれを行う方法を知っている人が必要です。

現在、私は試してみませんでしたが、見つけられたものを除いて、リスト内のすべてのユーザーの結果が届きました。その結果は、見つからなかった電子メールアドレスでなければなりません。

+0

ご質問は不明であるTHEN 'はい' ELSE 'NO' END(メール= '$メール' ユーザーからの1を選択します)。 NOT INクエリは、あなたが望むものを与えるはずです。おそらく、 "AND email not NULL"のような他の基準を除外するクエリを強化する必要があります。 – dar7yl

答えて

2

あなたは、アレイ内の見つかった電子メールを保存し、両方とarray_diff()を行うことができます。これは、あなたの$splitdataにあった電子メールの配列を与えるだろうが、データベース内に見つかりませんでした

$splitdata = array([email protected], [email protected], [email protected]) 
$sql= mysql_query("SELECT * FROM `users` WHERE `email` IN ('".join("','", $splitdata)."')")  or die ('Error: '.mysql_error()); 
while($result = mysql_fetch_array($sql)) {  
    $emailsFound[] = $result['email']; 
    $email = $result['email']; 
} 

$emailsNotInResults = array_diff($splitdata,$emailsFound); 

+0

おかげで、できます – user983511

0

フェッチ呼び出しでエラーが発生すると、通常、クエリが失敗し、ステートメントハンドルの代わりにブール値のFALSEが返されたことを意味します。

は、最初のクエリの失敗をチェックしてみてください。

$sql = mysql_query("...."); 
if ($sql === FALSE) { 
    die(mysql_error()); 
} 

フェッチ呼び出しを行う前に。

0

私はこのために1つのクエリをkludgeできますが、単純にして、一度に1つのメールだけをクエリします。

EXISTS SELECT CASE