为什么我无法使bind_result工作并将一些值分配给会话?

时间:2014-06-13 03:43:31

标签: php mysql

我做了一个准备好的声明,应该登录用户,一切正常,但我遇到bind_result()的问题。我的意思是它根本不起作用,我无法获得查询结果并将其分配给SESSION

这是我的代码:

session_start();
$sesUsername = "";
$sesCid = "";
$sesFirstName = "";
$sesLastName = ""; 
$mysqli = new mysqli($host_l, $username_l, $password_l, $dbName_l);
$loginQuery = "SELECT username, cid, first_name, last_name FROM Users WHERE username=? and password=?";
if($stmt = $mysqli->prepare($loginQuery)){
          $stmt->bind_param('ss',$usernameEsc, $passwordEsc);
          $stmt->execute();

          /* Store the result (to get properties) */
          $stmt->store_result();

          /* Get the number of rows */
          $num_of_rows = $stmt->num_rows;

          /* Bind the result to variables */
          $stmt->bind_result($sesUsername, $sesCid, $sesFirstName, $sesLastName);

          if($num_of_rows == 1){
               $_SESSION['username']= $sesUsername; // This is not working
               return true;
           }
           else {               
               http_response_code(401);
            }

          /* free results */
          $stmt->free_result();

          /* close statement */
          $stmt->close();
}
          /* close connection */
          $mysqli->close();

代码会将我重定向到成员区域,但在那里会话变量username为空。

为什么我无法让它发挥作用?我知道我错过了一些非常小的东西,但作为一个新手,我无法发现问题。

2 个答案:

答案 0 :(得分:4)

你必须这样做:

$stmt->fetch();

将结果输入变量。

答案 1 :(得分:1)

试试这个:

$stmt->bind_result($sesUsername, $sesCid, $sesFirstName, $sesLastName);
while ($stmt->fetch()) {
       $_SESSION['username']= $sesUsername;
   }