2012-04-24 15 views
0

私はこのようなスタックオーバーフローに関する多くの疑問を見てきましたが、私のコードがうまくいかない理由を知りたいのです。それは完全な(論理的な)意味をなす。私が心に持っているif文を実際に完成させるために書くべきコードは何ですか?単純なMySQLのクエリと比較

$result = mysql_query("SELECT confirmed FROM usernames WHERE username = '$username' AND password = '$password'") 
if ($result==NULL) 
echo 'Failure'; 

私はこれをPHPで試行しています。

注:

DBで確認がNULLに設定されているので、最後のエコーが表示されるはずです。

+0

....これを試すことができますか?どのようなエラーがありますか?それは何を返すと思いますか?どのサンプルデータですか?詳細情報が必要です。 – anothershrubery

+3

$ resultはリソースであり、/ field/sではありません。失敗した場合はfalse、失敗した場合はf.exを使用して取得する必要のあるリソースが含まれています。 mysql_fetch_array() –

答えて

1

変数$resultには、クエリの結果の内部表現(mysql_query()関数によって返される)が含まれています。実際の値を取得するには、mysql_fetch_assoc()またはmysql_result()のような別の関数を使用する必要があります。このような種類:

$result = mysql_query("SELECT confirmed FROM usernames WHERE username = '$username' AND password = '$password'"); 
$conf = mysql_result($result, 0, 0); 
if ($conf == NULL){ 
    echo 'Failure'; 
} 
+0

コードをありがとうございますが、最も重要なのは、説明に感謝します。非常に役立ちます。それは有り難いです。 – EGHDK

+0

問題ありませんが、受け入れることを忘れないでください:-) –

+0

受け入れられました。 4ヶ月後...しかし受け入れられました。 Heh。再度、感謝します。 – EGHDK

0

行をフェッチする必要があります。

$row = mysql_fetch_row($result); 
if($row[0] == NULL) 
{ 
    echo 'failure'; 
} 
0

あなたは動作しません何

/*Add die for check if query has error */ 
/*Put Limit 0,1 for fetch only single row*/ 
$result = mysql_query("SELECT confirmed FROM usernames WHERE username = '$username' AND password = '$password' Limit 0,1") or die(mysql_error()); 

if($result){ 
    /*check if query return result or not according sql cond*/ 
    if(mysql_num_rows($result) == 0){ 
    echo "No Record Found"; 
    exit(); 
    } 
    /*Assign confirmed index value to a varriable $condirmed*/ 
while($row = mysql_fetch_assoc($result)){ 
     $confirmed = $row['confirmed']; 
    } 
    if($confirmed == 'NULL'){ 
     echo "Failure"; 
    } 
} 
関連する問題