簡體   English   中英

從准備好的SELECT語句中獲取結果

[英]Fetch results from prepared SELECT statement

我正在制作一個php文檔,如果用戶在數據庫中並輸入了正確的用戶名和密碼,則將用戶登錄。 為了安全起見,我使用的是准備好的語句,但是我無法從SELECT查詢中獲取結果來設置網站所需的會話變量。 這是我的代碼...

<?php
session_start();
require 'config.php'; #This file has all connection info 
#$C is the mysqli connection
#$USERS is the name of the table in my database
$sql = $C->prepare('SELECT ID,Username,Favorites FROM '.$USERS.' WHERE Email=? AND Password=PASSWORD(?)');
$sql->bind_param("ss", $e,$p);

$e = $_POST['e'];#email
$p = $_POST['p'];#password

$query = $sql->execute();
$sql->store_result();
$numrows = $sql->num_rows;
if($numrows == 1) {
    $sql->bind_result($id,$username,$favs);
    while($sql->fetch()) {
        $_SESSION['ID'] = $id;
        $_SESSION['Name'] = $username;
        $_SESSION['favs'] = $favs;
        $_SESSION['valid'] = true;
    }
    echo 'true';
}
else {
    echo 'User Not Found';
}

這只是回顯“未找到用戶”,因為$ numrows始終= 0,並且我確保所有輸入的信息都是正確的。

將變量分配移至對bind_params的調用上方的$ e和$ p或至少在調用之上進行聲明。

bind_params的參數是通過引用傳遞的,因此對綁定之后但在執行之前生效的變量所做的更改會生效,但是AFAIK變量必須在綁定調用之前存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM