2017-04-10 34 views
-2

你好,大家好我試圖通過用戶名使用PDO和MySQL獲得用戶ID ... 我的代碼是:如何在PHP PDO mySQL中通過用戶名查找用戶標識?

<?php 
if(isset($_POST['log'])) 
{ 
    $logname = @$_POST["logname"]; 
$logpass = @$_POST["logpass"]; 

$sql = "SELECT username, password FROM users WHERE username=? AND 
    password=? "; 
    $query = $conn->prepare($sql); 
    $query->execute(array($logname,$logpass)); 
    if($query->rowCount() >= 1) { 
     $_SESSION["activeuser"] = true; 
    $_SESSION ["username"] = $logname; 


//here is starting my problem 
    $findid = $conn->prepare("SELECT id FROM users WHERE username= :username"); 
    $findid->bindParam(':username', $logname); 
    $findid->execute(); 
    $_SESSION ["userid"] = $findid; 

    header("Location:index.php"); 
     } 
     else {echo "incorrect username or password";} 
}?> 

這是我的login.php,evrything是工作好,直到$ findid ...我我試圖綁定$ _SESSION [「用戶id」] = //用戶從數據庫中選擇的ID ..

,如果您有任何其他的想法,你可以分享感謝您閱讀:)

編輯:問題感謝「Eric Lam」的解決..剛剛在$findid->execute();我編輯$_SESSION ["userid"] = $findid;

$result = $findid->fetch(); 
$_SESSION ["userid"] = $result[0]; :) :) 
+0

的var_dump會話/後數組和變量;你回來了什麼? –

+0

可變哥們:) –

+2

儘量不要在隨機'@'字符中忽略錯誤。錯誤很重要。不要忽視它們。 – tadman

回答

-1

PDO::Prepare返回PDOStatement。您不能將PDOStatement分配給會話。
您需要將結果綁定到變量。

嘗試

$findid->execute(); 
$result = $findid->fetch(); 
$_SESSION ["userid"] = $result[0]; 
+0

對不起,我的壞。你應該使用'fetch' –

+0

是的,我使用這是真實的,接下來的錯誤是「注意:數組到字符串轉換在C:\ wamp64 \ www \ trollflix.com \ header.php在15行」頭15行.php是

\t \t \t \t Login  /  Join us \t \t

+0

$ result [0]應該是你會找的;) –

相關問題