cardwell164 Posted April 8, 2014 Share Posted April 8, 2014 (edited) I am following this oop registration and login tutorial using PDO. It seems easy to understand that's why i am following it but i am currently having an issue when logging in. I don't have issues when registering as it pushes the data into the database but when i try to login its giving me this error "SQLSTATE[42000]: Syntax error or access violation: 1630 FUNCTION lar.COUNT does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual". "lar" is the name of my database. i double checked the spelling in my code to check if its a typo error but there is nothing wrong that i can find. i am not sure if the problem is with the syntax of my sql query or if theres a problem with the function i created to check for the query. here is the code for my login.php (i did not include the html code in here to save space) <?php require 'core/init.php'; $general->logged_in_protect(); if(empty($_POST) === false) { $username = trim($_POST['username']); $password = trim($_POST['password']); if(empty($username) === true || empty($password) === true) { $errors[] = 'Sorry, but we need your username and password.'; } else if($users->user_exists($username) === false) { $errors[] = 'Sorry that username does not exist'; } else if($users->email_confirmed($username) === false) { $errors[] = 'Sorry, but you need to activate your account. Please check your email.'; } else { $login = $users->login($username, $password); if($login === false) { $errors[] = 'Sorry, that username/password is invalid'; } else { session_regenerate_id(true); //destroying the old session and creating a new one $_SESSION['id'] = $login; header('Location: home.php'); exit(); } } } ?> and this is my code to my users class where i suspect there is a problem. users.php (i only included the user_exists and login function since all the rest seems to work fine) class Users { private $_db; public function __construct($database) { $this->_db = $database; } public function user_exists($username) { $query = $this->_db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username` = ?"); $query->bindValue(1, $username); try { $query->execute(); $rows = $query->fetchColumn(); if($rows == 1) { return true; } else { return false; } } catch(PDOException $e) { die($e->getMessage()); } } public function login($username, $password) { global $bcrypt; $query = $this->_db->prepare("SELECT `password`, `id`, FROM `users` WHERE `username` = ?"); $query->bindValue(1, $username); try { $query->execute(); $data = $query->fetch(); $stored_password = $data['password']; $id = $data['id']; #hasing the supplied password and comparing it with the stored hashed password. if($bcrypt->verify($password, $stored_password) === true) //using the verify method to compare the password with hashed passwords { return $id; } else { return false; } } catch(PDOException $e) { die($e->getMessage()); } } i have been at this for almost half a day now and still couldnt figure this out. i think im missing something that might be very simple for you guys here but i just dont know what it is. i am hoping that comeone could help me with this. i would greatly appreciate it. thanks! Edited April 8, 2014 by cardwell164 Quote Link to comment Share on other sites More sharing options...
mac_gyver Posted April 8, 2014 Share Posted April 8, 2014 if you copy/pasted this code from somewhere, it can have non-printing characters or characters with a character encoding that is not straight ascii. delete and retype everything between the final T in SELECT to the initial F in FROM. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.