2017-10-01 7 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()을 사용하여 이 반환 될 행 수를 검색하십시오 . 그러면 응용 프로그램이 올 Y 른 조치를 수행 할 수 있습니다.

대신, 당신은 일반 텍스트

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

고마워 많이 작동합니다! – LESETJA