2013-06-17 2 views
0

모든 것을 요약하면 포함 된 프로젝트에서 작업하고 있습니다. sqlsrv_fetch_array()는 매개 변수 1이 리소스가 될 것으로 예상합니다.

MSSQL 서버 2008

, ISS 7, PHP

내가 $ _SESSION을 사용하고 싶지만 내가 그것을 사용하는 경우이 여기

PHP Notice: Undefined index: Username in line 14 
PHP Notice: Undefined index: Afdeling in line 15 
PHP Notice: Undefined index: Mail in line 16 

ISS7

의 기록에 나타납니다 이러한 오류에 대해 스크립트입니다

session_start(); 
include_once("connect.php"); 

if (isset($_POST['username'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $tsql = "SELECT id, username, afdeling, mail FROM dbo.login WHERE   username='" . $username . "' AND password='" . $password . "'"; 
    $res = sqlsrv_query($conn, $tsql); 
    $row = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); 
    if ($row) { 
     $_SESSION['id'] = $row['id']; 
     $_SESSION['username'] = $row['Username']; 
     $_SESSION['afdeling'] = $row['Afdeling']; 
     $_SESSION['mail'] = $row['Mail']; 
     header("Location: calender.php"); 
    } else { 
     echo "login information is incorrect please try again."; 
    } 
} 

그리고 페이지 connect.php이 포함

$serverName = "TEST"; //serverName\instanceName 
$connectionInfo = array("Database" => "TEST", "UID" => "bla", "PWD" => "bloo"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 

if ($conn) { 
    echo "<span style='color:green;'>Connection established.</span><br />"; 
} else { 
    echo "<span style='color:red;'>Connection could not be established.</span><br />"; 
    die(print_r(sqlsrv_errors(), true)); 
} 
?> 

후 기능이 포함 된 스크립트를

echo "<form class='Login' action='TF.php' method='post'></br> 
Username: <input type='text' name='username' STYLE='width:200px';/>&nbsp;<br /> 
Password:&nbsp; <input type='password' name='password' STYLE='width:200px;'  />&nbsp;<br /> 
<input class='loginbutton' type='submit' name='submit' value='Log In' /> 

은 내가 어떻게 이러한 오류를 해결할 수 있습니까? 도움을 주시면 대단히 감사하겠습니다.

+0

에러'$ res = sqlsrv_query ($ conn, $ tsql); OR die (sqlsrv_errors());'. –

+0

'var_dump ($ row); '를 사용하여 디버그하십시오. – Rikesh

답변

1

sqlsrv_fetch_array() 전화 바로 다음에 print_r($row);을 입력하여 $row에 정확히 포함되어 있는지 확인하십시오.

배열 색인 ($row['Username']$row['username'] 또는 $row['USERNAME']과 같지 않음)으로 대소 문자를 구분할 수 있습니다.

+0

출력 : 배열 ([id] => 0 [username] => Martin [afdeling] => IT [mail] => [email protected]) – Innominatum

0

당신이 당신의 쿼리에서 소문자 이름을 가지고 있지만 행의 첫 글자를 대문자 있습니다

쿼리

SELECT id, username, afdeling, mail 

$ 행 :

$_SESSION['username'] = $row['Username']; 
$_SESSION['afdeling'] = $row['Afdeling']; 
$_SESSION['mail'] = $row['Mail']; 

그래서이 있어야한다 :

$_SESSION['username'] = $row['username']; 
$_SESSION['afdeling'] = $row['afdeling']; 
$_SESSION['mail'] = $row['mail']; 
+0

또한 정확합니다. 실제로 소문자였습니다. – Innominatum

관련 문제