如何根据会话的用户ID显示用户名

时间:2013-02-21 02:20:37

标签: php sql session

我在这里遇到一个问题,就是我想在员工输入员工ID后显示员工姓名。我的index.php将显示员工姓名,但不起作用。欢迎它显示“资源ID#4”之后的问题。

我的表:

  CREATE TABLE `staff` (                    
          `staffid` varchar(25) NOT NULL,         
          `password` varchar(25) DEFAULT NULL,    
          `staffname` varchar(50) DEFAULT NULL,   
          `staffemail` varchar(50) DEFAULT NULL,  
          `level` int(2) DEFAULT NULL,            
          PRIMARY KEY (`staffid`)                 
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1

index.php:

<?php require_once('Connections/sqlconnection.php');

//initialize the session
if (!isset($_SESSION)) {
  session_start();
}
$colname_rsstaff = $_SESSION['staffid'];
if (isset($_GET['staffid'])) {
    $colname_rsstaff = $_GET['staffid'];
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);

  $logoutGoTo = "login.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ?     mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
 }
}

mysql_select_db($database_sqlconnection, $sqlconnection);
$query_rsstaff = sprintf("SELECT staffname FROM staff WHERE staff.staffid = %s",     GetSQLValueString($colname_rsstaff, "text"));
$rsstaff = mysql_query($query_rsstaff, $sqlconnection) or die(mysql_error());
$row_rsstaff = mysql_fetch_assoc($rsstaff);
$totalRows_rsstaff = mysql_num_rows($rsstaff);
?>
<title>Sistem Pengurusan Stok</title>
<center>
  <form name="form1" method="POST" action="">
    <table width="633" height="431" border="1">
      <tr>
        <td height="124" colspan="2" align="right"><?php include 'header.php'?>
<p><?php echo date("d-m-y")."<br>";?></p></td>
      </tr>
      <tr>
        <td width="167" height="262"><?php include 'menu.php'?></td>
        <td width="450" align="center"><p>Welcome
            <?php echo $rsstaff?>
</p>
      <p><a href="<?php echo $logoutAction ?>">Log out </a></p>
      <p><a href="<?php echo $logoutAction ?>"> </a></p></td>
     </tr>
     <tr>
        <td height="37" colspan="2"></td>
     </tr>
   </table>
  </form>
</center>
<? session_destroy()?>
<?php
mysql_free_result($rsstaff);
?>

请有人帮助我......#谢谢。

2 个答案:

答案 0 :(得分:1)

请勿使用MYSQL_ *,因为它已被弃用

这个答案是基于你想要做的事情。

此处的信息:mysql_query

执行$rsstaff = mysql_query($query_rsstaff, $sqlconnection)时,您将获得资源而不是您对数据库SELECT staffname FROM staff WHERE staff.staffid = %s所期望的资源。

尝试以下方法:

$result = mysql_query($query_rsstaff, $sqlconnection);
$rsstaff = mysql_fetch_assoc($result);

然后

Welcome <?php echo $rsstaff["staffname"]; ?>

或者更简单

$rsstaff = mysql_result(mysql_query($query_rsstaff),0);

然后使用您的代码。

答案 1 :(得分:1)

执行<?php echo $rsstaff?>时,您将打印出MySQL查询资源$rsstaff。这种输出没有明显的形式,所以PHP只是告诉你“它是一种资源”而不是更有意义的东西。那是你看到的输出。

您打算打印出$row_rsstaff的其中一个元素,可能是"staffname"元素。

所以:

<?php echo $row_rsstaff["staffname"] ?>
相关问题