2012-07-26 3 views
0

내 phpscript의이 부분에 무엇이 잘못된 것인지 알 수 없습니다. 로그인은 성공했지만 올바른 계정에서 데이터를 검색 할 수 없습니다. 스크립트의이 부분에 이상이 있는지 누구라도 알 수 있습니까?PHP 로그인으로 올바른 데이터를 가져올 수 없습니다.

SELECT * FROM account_bedrijf WHERE Account_nr = '5limit 1' 

당신은 공백을 삽입하는 것을 잊었다 작은 따옴표 사이의 ID를 두지 않았다

  $_SESSION['ingelogd'] = true; 
      $_SESSION['profiel'] = $rij['Type']; 
      $_SESSION['gebruikerID'] = $rij ['Account_nr']; 
      // Gebruiker succesvol ingelogd, gegevens opslaan in sessie enzo ... 
      if(strcmp($rij['Type'],"bedrijf")==0){ 
       $query2 = "SELECT * FROM account_bedrijf WHERE Account_nr = '" . $_SESSION['gebruikerID'] . "limit 1' "; 
       $result2 = mysql_query($query2) or trigger_error(mysql_error()); 
       if(mysql_num_rows($result2) == 0) { 
        session_unset(); 
        echo 'Ongeldige gebruikersnaam en/of wachtwoord'; 
       } else { 
        $_SESSION['company'] = $result->Bedrijf_nr; 
        header('Location: company_profile.php') ; 
+0

어떤 결과를 얻습니까? 잘못된 사용자 데이터가 표시됩니까? – Peon

+0

네덜란드어 스크립트처럼 보입니다 : p – Matthias

+0

예, 요청 된 계정에서 필요한 데이터를 가져 오지 못하는 것 같습니다. 그냥 내 데이터베이스에서 임의의 정보를 company_profile (로그인 한 계정이 아님)에 배치합니다. – sayno

답변

2
SELECT * FROM account_bedrijf WHERE Account_nr = '" . $_SESSION['gebruikerID'] . "limit 1' "; 

합니다 (gebruikerID 경우 5) 다음 SQL 문을 생성합니다. 더 정확한 것 :

SELECT * FROM account_bedrijf WHERE Account_nr = '" . $_SESSION['gebruikerID'] . "' limit 1"; 

이 내가 코드를 다시 작성

SELECT * FROM account_bedrijf WHERE Account_nr = '5' limit 1 
+0

그러나 'Account_nr'필드는 숫자 값처럼 들리지만 현재는 텍스트/enum 값. 'Account_nr'가 실제로 숫자 속성이면, 위의 코드 샘플에서 둘러싸인 따옴표를 버리십시오 :) – Wouter

+0

Thanks! 숫자가 맞습니다. 아직도 작동하지 않습니다 .. – sayno

+0

SQL 문 끝에 "제한 1"을 사용하는 이유는 무엇입니까? Account_Nr은 이미 고유해야하는 기본 키처럼 들리므로 처음으로 얻은 결과를 걸러 낼 필요가 없습니다. – Matthias

0

더 정확한를 생성합니다. mysql_error를 넣으면 mysql 에러가 발생했는지 알 수있다.

<?php 
    $_SESSION['ingelogd'] = true; 
    $_SESSION['profiel'] = $rij['Type']; 
    $_SESSION['gebruikerID'] = $rij['Account_nr']; 
    // Gebruiker succesvol ingelogd, gegevens opslaan in sessie enzo ... 
    if (strcmp($rij['Type'], "bedrijf") == 0) 
    { 
     // Define variables 
     $session_var = $_SESSION['gebruikerID']; 
     $query2 = "SELECT * FROM account_bedrijf WHERE Account_nr='$session_var' LIMIT 1"; 
     // Do the query // use mysql error for debugging 
     $result2 = mysql_query($query2) or die(mysql_error()); 
     if (mysql_num_rows($result2) == 0) 
     { 
      session_unset(); 
      echo 'Ongeldige gebruikersnaam en/of wachtwoord'; 

     } else 
     { 
      $_SESSION['company'] = $result->Bedrijf_nr; 
      header('Location: company_profile.php'); 
     } 
    } 
    ?> 
+0

감사합니다. 나는 당신의 스크립트로 그것을 대체했지만 같은 결과를 낳았다. 아마도 문제는 다른 곳에서 발생하지만 문제를 찾을 수 없습니다. 아마도 그것은 세부 사항 일 것입니다. 로그인 한 계정을 등록 된 계정으로 사용할 수는 있지만 계정 정보는 company_profile.php에 표시되지 않습니다. 아마도 뭔가 잘못된 것이있을 것입니다 : $ _SESSION [ 'company'] = $ result-> Bedrijf_nr; 헤더 ('위치 : company_profile.php'); – sayno

관련 문제