2014-01-13 6 views
0

Скрипт работает для добавления пользовательских данных в БД, однако я хочу, чтобы проверить, если имя пользователя находится в использовании, но продолжает работать в эту ошибкупроверки имени пользователя против п.д.о. базы данных

Fatal error: Call to a member function rowcount() on a non-object in /home/4507408/public_html/registeruser.php on line 78 

Я не могу показаться, чтобы суметь это сделать с PDO, любая помощь будет отличной!

<?php 
       $form = $_POST; 
       $username = $form[ 'username' ]; 
       $password = $form[ 'password' ]; 
       $firstname = $form[ 'firstname' ]; 
       $location = $form[ 'location' ]; 
       $age = $form[ 'age' ]; 
       $email = $form[ 'email' ]; 

       $usercheck = $_POST['username']; 

       $check = "SELECT username FROM use WHERE username = '$usercheck'"; 
       $query = $DBH->prepare($check); 
       $query = $DBH->prepare($check); 
       $query->execute(); 
       $data = $query->fetchALL(); 

       $check2 = $check->rowcount(); 



       //if the name exists it gives an error 

       if ($check2 != 0) { 

         die('Sorry, the username '.$_POST['username'].' is already in use.'); 

           } 

       $sql = "INSERT INTO user (username, password, firstname, location, age, email) VALUES (:username, :password, :firstname, :location, :age, :email)"; 

       $query = $DBH->prepare($sql); 

       ?> 
+0

Не уверен, но, взглянув на код, у меня есть подозрение, что вы должны заменить '$ check2 = $ check-> rowcount();' либо с помощью '$ check2 = $ data-> rowcount(); 'или' $ check2 = $ query-> rowcount(); '. – Andris

+0

Почему вы используете PDO без подготовленных заявлений? – ComFreek

+0

Вы пробовали $ check2 = $ check-> rowCount(); Это верблюд. Кроме того, используйте подготовленные заявления –

ответ

4

Эта линия:

$check = "SELECT username FROM use WHERE username = '$usercheck'"; 

неправильно. use - зарезервированное слово SQL. Предполагаю, вы имели в виду user. Это также ужасная идея ввести значение в строку запроса с помощью простой замены переменных. Весь смысл PDO заключается в использовании параметризованных запросов: http://us1.php.net/pdo.prepared-statements

Смежные вопросы