2016-09-16 83 views
-4

我想修復這個錯誤。我想列在數據庫名稱是角色並進入會議如何在PHP和PDO中修復此警​​告「非法字符串偏移量」?

$username = $_POST['username']; 
    $password = $_POST['password']; 

    $statment = $con->prepare("select * from users where username = ? and password = ? limit 1"); 
    $statment->execute(array($username,$password)); 
    $count = $statment->rowCount(); 
    $row = $statment->fetchColumn(); 

    if($count > 0) 
    { 
     $_SESSION['username'] = $username; 
     $_SESSION['password'] = $password; 
     $_SESSION['role'] = $row['role']; 

     echo 'User Name : '.$_SESSION['username'].' , Password : '.$_SESSION['password'].' , Role : '.$_SESSION['role']; 
    } 
    else 
    { 
     echo 'Failed To Login'; 
    } 
+2

你也許想發佈完整的錯誤消息,並在你的哪一行上得到它。 – Rizier123

+0

@Antono:不需要它。您可以將綁定值作爲數組傳遞給執行調用。 –

+1

此外,@Antono - 這是一個mysqli_'函數,它與PDO不兼容(請參閱標記+語句中使用的函數)。 – Qirel

回答

1

RTM:http://php.net/manual/en/pdostatement.fetchcolumn.php

這個函數返回一個VALUE,而不是一個數組:

$row = $statment->fetchColumn(); 
    ^---your column, a string 

$_SESSION['role'] = $row['role']; 
         ^^^^^^^^^^---treating your string as an array, with invalid index 
+0

他應該的功能正在使用的是'fetch(PDO :: FETCH_ASSOC)'。 – Barmar

相關問題