我對PHP和PDO相當陌生,並且試圖製作一個簡單的登錄系統。現在,我試圖從我的表中獲取ID和密碼,以便與用戶輸入的密碼進行比較(我使用單向加密鹽)。所以,現在的問題是,當我只做$password = $stmt->fetchColumn(1)
時,我的登錄系統工作。現在,當我嘗試通過在$password
之前執行$id = $stmt->fetchColumn(0)
來獲取id
時,我無法再登錄,並且出現「錯誤的用戶名/密碼」錯誤。使用PHP PDO查詢選擇2列
現在我很確定我在做錯fetchColumn
,但我無法弄清楚。
這裏有一個代碼段工程:
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
//set how pdo will handle errors
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//this would be our query.
$sql = "SELECT id, password FROM user_admin WHERE email = :email";
//prepare the statements
$stmt = $con->prepare($sql);
//give value to named parameter :email
$stmt->bindValue("email", $this->email, PDO::PARAM_STR);
$stmt->execute();
$password = $stmt->fetchColumn(1);
現在下面不起作用。請注意,這種情況發生的時候我加入了$id
:
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
//set how pdo will handle errors
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//this would be our query.
$sql = "SELECT id, password FROM user_admin WHERE email = :email";
//prepare the statements
$stmt = $con->prepare($sql);
//give value to named parameter :email
$stmt->bindValue("email", $this->email, PDO::PARAM_STR);
$stmt->execute();
$id = $stmt->fetchColumn(0); //That's the problem
$password = $stmt->fetchColumn(1);
任何幫助是極大的讚賞。
什麼是您的*真實*問題?你嘗試過var_dump($ id)嗎? – itinance
@itinance是的。上面提到的問題是,當我添加$ id行時,我無法再登錄,並且出現「錯誤的用戶名/密碼」錯誤,而不是「您現在已登錄」 – nTuply