your if() condition in the userLogin() method won’t work out. your result set contains only one row that is processed by the first call to fetchColumn(). hence the second call will return false (no more rows to fetch from) and all the array accesses will cause a warning.
string PDOStatement::fetchColumn ([ int $column_number = 0 ] )
Returns a single column from the next row of a result set or FALSE if there are no more rows.