2011-10-23 4 views
-2

私はMySqlテーブルを持っています。 すべての行の特定のフィールドをチェックしたいと思います。このフィールドに行のいずれかの特定の値がある場合は、PHPで何かを印刷し、その行にその値がない場合は、PHPに別の処理をさせます。このコードではフィールドの特定の値をmysqlテーブルのすべての行でPHPで確認したい

外観:このコードで

$queryplus="SELECT * FROM comments WHERE id='$id' and comment='plus'"; 
$resultplus=mysql_query($queryplus) or die(mysql_error()); 
while($rowplus = mysql_fetch_array($resultplus)) 
{ 
    $email3=$rowplus['email']; 
    $fname3=$rowplus['fname']; 
    $lname3=$rowplus['lname']; 
    $email=$_SESSION['email']; 
} 

if ($email==$email3) 
{ 
    echo "UNPLUS"; 
} 
else 
{ 
    echo "PLUS"; 
} 

、挿入された最後の行は、$ Eメール= $ email3を持っている場合、コマンドは正常に実行され、$ Eメール= $ email3がある場合、それはUNPLUS印刷しますが、場合最後の行以外の行で真の場合、コマンドは実行に失敗し、PLUSを出力します。

どうか私に教えてください。

注:$ _SESSION ['email']は、現在ログインしているユーザーによって提供された値を持つ別のテーブルの電子メールフィールドの値です。

+3

を試してみてください。 – Tom

+4

いずれにせよ、SQLリクエストに比較を行い、戻り値をチェックするのはなぜですか? – mario

答えて

1

は、私の目は出血している

$queryplus="SELECT * FROM comments WHERE id='".mysql_real_escape_string($id)."' and email='".mysql_real_escape_string($_SESSION['email']."' and comment='plus'";
+0

あなたの答えで正確にではありませんが、私はあなたの答えで何をすべきかについてのヒントを得て、トラブルを取り除きます... – Muddser

5

while()は、すべての行をフェッチして変数に割り当てています。ループが終了するまで、そのデータで何もしません。つまり、多くの行をフェッチしていますが、最後の行のデータを除くすべての行を削除します。

あなたはしばらく()ループ内であなたのif ($email ...)チェックを移動する必要があります。

while($row = mysql_fetch_array($resultplus) { 
    ... assign variables ... 
    if ($email == $email3) { 
     yada yada 
    } else { 
     yada yada 
    } 
} 
+0

これを行うと、エコーで使用するすべての行が出力されます。私がecho $ email3を出力した場合。それはすべての電子メールを示しています... – Muddser

関連する問題