2017-10-01 6 views
-1

電子メールとパスワードが一致した場合、ユーザーのmysql tblUserからuserIDを返すようにします。現在、それはほとんどのデータベースでは何もmysqlからrowCountを使用してフィールドを返すことができません

<?php 

    include 'config.inc.php'; 

    // Check whether username or password is set from android 
    if(isset($_POST['email']) && isset($_POST['password'])) 
    { 
      // Innitialize Variable 
      $result=''; 
      $email = $_POST['email']; 
      $password = $_POST['password']; 

      // Query database for row exist or not 
      $sql = 'SELECT UserID FROM tblUser WHERE email = :email AND password = :password'; 
      $stmt = $conn->prepare($sql); 
      $stmt->bindParam(':email', $email, PDO::PARAM_STR); 
      $stmt->bindParam(':password', $password, PDO::PARAM_STR); 
      $stmt->execute(); 
      if($stmt->rowCount()) 
      { 
      $result="true" . UserID; 
      } 
      elseif(!$stmt->rowCount()) 
      { 
       $result="false"; 
      } 

      // send result back to android 
      echo $result; 
    } 

?> 
+1

を行うことができます**クリアテキストでパスワードを保存しないでください!**。パスワードハッシュだけを保存してください! PHPの['password_hash()'](http://php.net/manual/en/function.password-hash.php)と['password_verify()'](http://php.net/manual/en /function.password-verify.php)。 5.5よりも低いバージョンのPHPを実行している場合は、[password_compat library](https://github.com/ircmaxell/password_compat)を使用して同じ機能を使用できます。 –

+1

あなたのコードに 'UserID'を書いて結果を得ることはできません(おそらく、定義されていない定数です)。結果を得る方法については、マニュアルを読む必要があります:http://php.net/manual/en/pdostatement.fetch.php –

+0

または、初期条件が満たされていないか、スクリプトがエラーになります。エラーが表示されているかどうかを確認するには、エラーを表示するか、サーバーログを確認する必要があります。 – jeroen

答えて

0

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

代わりに、あなたは

 if($data = $stmt->fetch()) 
     { 
     $result="true".$data['UserID']; 
     } 
     else 
     { 
      $result="false"; 
     } 
+0

ありがとうたくさんの作品! – LESETJA

関連する問題