2013-10-08 2 views
0

저는 PHP에 익숙하지 않으므로 저와 같이있어주세요. 나는 사용자가 존재하는지 여부에 대해 데이터베이스를 쿼리하는 로그인 폼을 만들고있다. 이 스크립트는 내 서버에서 제대로 작동하지만 일단 대학 서버에서이 스크립트를 사용해 보았을 때 제목에 오류가 발생했습니다. 문제는 SQL 쿼리와 관련이 있다고 생각하지만 솔직히 말해서는 안됩니다. 도움이된다면 고맙겠습니다. 감사합니다.PHP 오류 메시지 : mysql_num_rows()는 매개 변수 1이 리소스가 될 것으로 예상하고, 부울은 주어진 것입니다.

<?php 
$dbhost="localhost"; 
$username="v22comp_B09052"; 
$password="-"; 
$db="v22comp_B09051-12-13"; 
$table="secrets"; 

// Connect to the database 
mysql_connect("$dbhost", "$username", "$password") or die ("Can not connect to the database"); 
mysql_select_db("$db") or die ("Database is not selectable"); 

//Post input 
$inputusername=$_POST['uid']; 
$inputpassword=$_POST['upassword']; 

//Check input 
$sql="SELECT * FROM $table WHERE username='$inputusername' and password='$inputpassword'"; 
$sqlop=mysql_query($sql); 

//If a row matches, output a string informing the user that they are logged in. If not, output a string informing them that they are not 
$rowmatch=mysql_num_rows($sqlop); 
if($rowmatch==1) 
{ 
echo "You are now logged in"; 
} 
else 
{ 
echo "Invalid ID or password"; 
} 
?> 
+0

mysql_query()가 실패하면 유효한 'Resource'가 아닌 FALSE를 반환합니다. 왜 mysql_num_rows()를하려고 할 때 에러가 발생하는지. 쿼리를 수행 한 후 오류를 확인하십시오. mysql_error()에 의해 제공된 데이터가 유용 할 수있다. – Havenard

+1

[SQL injection attacks] (http://bobby-tables.com)에 취약합니다. 방어적인 프로그래밍 방법을 배울 때까지이 코드 작업을 중단하십시오. –

+0

쿼리가 실패했는지 확인하십시오 :'$ sqlop = mysql_query ($ sql) or die ('Error');' – WebNovice

답변

0

귀하가 맞는지, 질문이 잘못되었는지 확인하십시오. 쿼리가 잘못되면 false를 반환하므로 부울 오류가 발생합니다.

+1

종종 서버 이동은 테이블 이름 접두어 특히 모든 것을 설정하기 위해 cPanel 등을 사용할 때) - 테이블 이름을 변경해야 할 수도 있습니다 ...? –

0

내 견해로는 SQL 문에 오류가 있습니다. 그래서 결과 집합에 대한 리소스를 반환하지 않지만 가정 된 부울 'false'를 반환합니다. 데이터를 선택하려고하는 테이블을 만드는 것을 잊었을 수 있습니까?

관련 문제