2014-09-18 4 views
0

저는이 등록/로그인 스크립트가 정말 잘 진행되고 있습니다. 저는 PHP를 처음 사용합니다.데이터베이스에있는 자격 증명과 일치하지 않는 자격 증명이 로그인하지 못하도록합니다.

모든 자격 증명이 로그인하여 세션을 만들 수있는 문제가 발생했습니다. 코드가 입력 된 내용을보고 있지 않아서 데이터베이스가 올바른지 확인하지 못하고이 오류 메시지가 나타납니다.

경고 : mysqli_num_rows()는 부울 C에 주어진 mysqli_result하는 매개 변수 1을 기대 : \ WAMP \ www가 \ 라인에 게임 \의 login.php 25

가 지금은 조금 연구를했고 나는 발견 질문 (이 사이트에서)은 내가 제공하는 쿼리가 결과가 아닌 부울을 반환한다고 명시합니다. 여기에 코드

$query = mysqli_query($con,"select * from users where password='$password' AND username='$username'"); 
$rows = mysqli_num_rows($query); 

보통 정답은 나에게 여기에 게시해야 내 문제를 해결하지 할 수있는 정보를 제공 하지만 내가 어떻게 :(

+1

SQL 쿼리에 직접 변수를 삽입하지 마십시오. 그들은 먼저 탈출해야합니다. 더 나은 : 준비된 진술을 사용하십시오. – lxg

답변

1

mysqli_query 부울을 반환를 해결하는 방법 아무 생각이 없다, 가장 가능성이 높은 false은 쿼리에 실패한 것이므로 mysqli_error을 사용하면 더 이상 작동하지 않는 코드를 표시하지 않고도 추측 할 수 없을 것입니다.

+0

mysqli_error는 나에게 변경을 허락하는 유익한 오류를 주었다. 정말 고마워! 나는 그것을 더 자주 사용할 것이고, 당신이 대답 할 수있는 더 많은 질문을 저장합니다 : P –

0

당신이 만든 쿼리, 그래서 $ 행 = mysqli_num_rows ($ 쿼리); 줄 당신에게 0 행을 줄 것이다, j는 그것들이 0보다 큰지 시험해 보라.

if ($rows > 0) { 
    //do the magic :) 
} 
0

먼저 쿼리가 무언가를 반환하는지 확인해야합니다. 무언가를 반환하지 않으면 다른 방법으로 처리합니다. 그냥 다음과 같이 가정하십시오.

if($query === FALSE) { 
    die(mysql_error()); // error handling 
} 
$rows = mysqli_num_rows($query); 
관련 문제