2016-10-21 8 views
0

"データベースに存在するかどうか"をチェックするために、文字列を評価する必要がある次のPHP関数があります。この文字列は、電子メール形式の変数$rowになります。私は擬似コードをifステートメントに入れました。助けてくれてありがとう!エラーが発生した場合PHP関数を使用してSQL Serverの文字列を評価する方法は?

<?php 

if (isset($_POST['submit'])) { 
    $firstName = $_POST['firstName']; 
    $lastName = $_POST['lastName']; 
    $username = $_POST['username']; 
    checkUsername($firstName, $lastName, $username); 
    } 

function checkUsername($firstName, $lastName, $username){ 
include 'connect_sql.php'; 

     $sql = "SELECT UserName FROM [Membership].[dbo].[Center] WHERE UserName='$username'"; 
     $stmt = sqlsrv_query($conn, $sql); 
     $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); 

     if(<$row is true and identical>) {    
      echo "<div id='loginmsg'>Member already exist</div>"; 
     } 

     else { 
      echo "<div id='loginmsg'>Member is new</div>"; 
     } 
    } 
?> 
+2

あなたの質問は何ですか? –

+1

'var_dump($ row)'は​​おそらくあなたの質問に答えるでしょう。そして、行が取得される可能性があるという単純な事実は、クエリがSOMEE​​THINGとマッチしたことを伝えます。 –

+0

@u_mulder $行変数をif条件でどのように評価できますか?私は次の行を試しました(sqlsrv_num_rows($ row)> 0)。行をフェッチしますが、他の条件にジャンプします。 – Jacman

答えて

2

あなたがsqlsrv_fetch_array説明を読めば、あなたがreturn values

でこれを見ることができますは返すためにもう行がない場合はNULL成功、上の配列を返し、そしてFALSE。

UserName='$username'sqlsrv_fetch_arrayによって返される行が検索された場合、 ARRAY

クエリで行が見つからない場合は、UserName='$username'sqlsrv_fetch_arrayが返すものはありますか? NULL

したがって、$row変数はarrayまたはnullのいずれかです。 (もちろん、エラーの場合はfalseにすることもできますが、チェックすることもできます)。したがって、$rowがヌルかどうかをチェックする必要があります。これは次の方法で行うことができます:

if ($row) { 
    echo "<div id='loginmsg'>Member already exist</div>"; 
} else { 
    echo "<div id='loginmsg'>Member is new</div>"; 
} 
+0

ありがとう、私はあなたのポイントを参照してくださいしかし、それは動作しませんでした。文字列にはコードが含まれていますが、それ以外の条件になります。あなたの答えを尊敬します。 – Jacman

+0

'else'ブランチが動作する場合は、必要なレコードがありません。クエリテキストを確認し、SQLで直接実行して結果を確認してください。 –

+0

SQL Serverで直接実行したため、クエリは正常です。私は、SQLSRV関数についてのより多くのドキュメントがあることを願っています。私はすべてを試みましたが、運はありませんでした。 – Jacman

関連する問題