使用Session变量作为WHERE谓词;我错误地接近了吗?

时间:2014-06-03 17:54:25

标签: php session-variables

我们希望根据特定用户的部门查询我们的数据库和样本记录。

鉴于应用程序设计,我知道这样做的唯一方法是使用dept的会话变量来过滤查询。

以下代码无效。

如果我注释掉会话变量,则会返回数据。

使用会话变量作为过滤器检索没有任何内容。

任何想法我做错了什么?

会话变量路由错误吗?

提前感谢您的帮助。

//Start your session
session_start();

// Connect to SQL Server database
include("../sqlConnect.php");

// Construct query
$loginName = $_GET['loginName'];


//Ok, let's grab user's dept from query

$sql = "SELECT ISNULL(dept,'NA') AS 'dept' FROM emp where ([userName]) = lower('$userName')"
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false )
{
     echo "Error in executing query.</br>";
     die( print_r( sqlsrv_errors(), true));
}
$results = array();

while($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC)) {
    array_push($results,$row);
    $dept = $row['dept'];
}

//Store department in the session
$_SESSION['dept'] = $dept;

//Now extract records based on dept

$tsql ="SELECT 
     r.REQUESTID,
     convert(char(10),r.[currDate],101),
     r.[startedDBY],
     e.[dept],
     e.[WORKPHONE],
     e.[EMAIL],
     r.[DESCRIPTION],
     r.[DETAILS],
     r.[PROBLOCATION],
     c.[COMMENTS]'     
FROM EMPLOYEE e,REQUEST r,CUSTOMERCALL c 
WHERE LOGINNAME='$loginName' 
AND c.REQUESTID=r.requestid 
AND e.dept = '" . $_SESSION['dept'] . "'
";


$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
     echo "Error in executing query.</br>";
     die( print_r( sqlsrv_errors(), true));
}
$results = array();

while($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC)) {
    array_push($results,$row);
}

 echo json_encode($results);


// Free connection resources
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);

0 个答案:

没有答案