2011-11-28 5 views
0

나는 간단한 로그인 폼을 만들고 내 코드는 데이터베이스에 연결하기 위해이 코드를 실행하려고에 연결오류 데이터베이스

나는이 오류가 계속
<?php 
$avaialableuser=$_POST["username"]; 
$avaialablepass=$_POST["password"]; 
$login = mysql_connect("localhost","ahmed",""); 
if (!$login) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("login module",$login); 
$result= mysql_query("SELECT * FROM people"); 
while($row = mysql_fetch_array($result)) 
    { 
    if(($row['username']==$avaialableuser) && ($row['password']==$avaialablepass)){ 
echo "WELCOME"; 
} 

else 
echo "sorry your username or password entered is incorrect please try again"; 
} 
mysql_close($login); 
?> 
> 

[오후 9시 3분 25초입니다 ] ahmed atwa : 경고 : mysql_fetch_array()는 매개 변수 1이 리소스가 될 것으로 기대하고, 부울 값은 C : \ xampp \ htdocs \ example \ login.php 11 행에 있습니다.

누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있니? 감사합니다.

+0

$ result는 리소스가 아닙니다. 좋은 방법은 mysql_query가 성공했는지 확인하는 것이다. – Julien

+0

당신의 mysql 테이블을 작성해야합니다 – misima

+0

유이 코드를 사용할 수 있습니다 ...$ result = mysql_query ("SELECT * FROM people") or die (mysql_error()); – misima

답변

1

MySQL 서버에 연결하지 못했습니다. $login 값을 확인 했으므로 mysql_select_db() 문이 실패했거나 쿼리가 작동하지 않는다고 가정 할 수 있습니다. 데이터베이스 이름을 확인하고 다시 시도하십시오.

향후 이러한 문제를 방지하려면 mysql_select_db()mysql_query()의 반환 값을 확인하십시오.

+0

또는 다른 이유로 쿼리가 실패했습니다. 즉, 테이블이 존재하지 않습니다. – nickb

+0

@nickb : 가능합니다.이를 반영하여 답변을 업데이트했습니다. 그러나이 경우 데이터베이스 이름 ("로그인 모듈")이 문제 일 수 있습니다. –

1

manual에 따르면 mysql_query return false 어떤 이유로 든 쿼리가 실패하는 경우.

가장 일반적인 두 가지 이유는 다음과 같습니다

  1. 쿼리 자체가 당신은 쿼리를 수행 할 수있는 권한이 없습니다
  2. 올바르지 않습니다.

가능한 범위 내에서 오류 검사를 도입하고 필요한 경우 중단하십시오. 귀하의 예제에서는 두 가지 상황이 오류가 나올 수 있었다있다 : 실패 할 경우

  1. mysql_select_db("login module",$login);
  2. $result= mysql_query("SELECT * FROM people");

이 두 가지 상황 모두가 false를 돌려줍니다.

편집 :이 경우
문제는 당신이 당신의 데이터베이스 이름에 공백을 사용하고 있다는 점이다. 당신이 괄호 []를 사용하여 이름을 묶어야 할 필요가 작동하게하려면

mysql_select_db("[login module]",$login); 
1

이것이 사실이라면 나도 몰라,하지만 난 당신이 DB-이름에 공백을 사용해서는 안 생각 : 가 없습니다 귀하의 DB 이름은 "login_module"입니까?

mysql_select_db("login module",$login);

€의 DIT : 당신은 [괄호]에 DB-이름을 포함해야합니다 :

쿼리는 것을 의미합니다 몇 가지 이유에 대한 실패

mysql_select_db("[login module]",$login);

+0

이름에 공백을 사용할 수 있지만 공백을 넣어야합니다. 내 대답을 보라. – Marcus

+0

아, 맞아 :) 고마워 ... – ninov