Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: не могу в базу добавить ругается

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pipka
Отправлено: 15 Марта, 2012 - 13:00:59
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




не могу в базу добавить ругается
Fatal error: Call to a member function prepare() on a non-object in Z:\home\liga\www\addRega.class.php on line 33


PHP:
скопировать код в буфер обмена
  1.  
  2. class addRega extends db_Con{
  3.  
  4.         protected $login;
  5.         protected $password;
  6.  
  7.         function __construct() { }
  8.  
  9.  
  10.         function ClearData(){
  11.  
  12.                 $this->login = trim(strip_tags($_POST['login']));
  13.                 $this->password = trim(strip_tags($_POST['password']));
  14.  
  15.                 return $this->login and $this->password;
  16.         }
  17.  
  18.         function addUser(){
  19.                 if(isset($_POST['submit'])){
  20.  
  21.                 $DB = self::Con();
  22.                
  23.                 $this->ClearData();
  24.  
  25.                         if ($this->login and $this->password){
  26.  
  27.                         $data = array('login' => $this->login,'password' => $this->password);
  28.                        
  29.                         $query = $DB->prepare("INSERT INTO users (login , password) VALUES (:login , :password)");
  30.                        
  31.                                 if ($query->execute($data)){
  32.                                 echo "Регестрация прошла успешно =)";
  33.                                 }
  34.                         }
  35.                 }
  36.         }
  37. }
 
 Top
Мелкий Супермодератор
Отправлено: 15 Марта, 2012 - 13:10:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




$DB не является объектом. Почему - не видно по приведённому коду. Скорей всего проблема в db_Con или выше по иерархии классов.

К слову, db_Con, видимо - класс базы данных. Нафиг вы от него наследуете? База должна быть синглтоном или фабрикой и вызываться там, где нужна непосредственно.


-----
PostgreSQL DBA
 
 Top
Pipka
Отправлено: 15 Марта, 2012 - 13:17:14
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. class db_Con{
  2.  
  3. const DB_HOST = "localhost";
  4. const DB_NAME = "liga";
  5. const DB_LOGIN = "root";
  6. const DB_PASS = "";
  7.  
  8. protected function Con(){
  9.  
  10. try {  
  11.  
  12.    # MySQL с PDO_MYSQL  
  13.  $DB = new PDO("mysql:host=".self::DB_HOST.";dbname=".self::DB_NAME."", self::DB_LOGIN, self::DB_PASS);  
  14.   $DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  15.  
  16.  
  17. }  
  18. catch(PDOException $e) {  
  19.     echo $e->getMessage();  
  20. }
  21.  
  22.  
  23. }
  24.  
  25. }
 
 Top
Pipka
Отправлено: 15 Марта, 2012 - 15:37:02
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




так что сделать то надо?
 
 Top
Мелкий Супермодератор
Отправлено: 15 Марта, 2012 - 15:43:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Вернуться обратно к основам. И изучать язык по порядку, как будто первый раз его видите, а не хвататься сразу за ООП.

Де факто:
Почему вы обращаетесь к результату метода Con, который в принципе ничего не возвращает?


-----
PostgreSQL DBA
 
 Top
Andrusa95
Отправлено: 15 Марта, 2012 - 15:46:56
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Попробуйте после

PHP:
скопировать код в буфер обмена
  1. $DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );


дописать



Надеюсь поможет.


-----
Знание есть сокровище, но хранитель его — разум.

Пенн Вильям
 
 Top
Pipka
Отправлено: 15 Марта, 2012 - 16:03:58
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




помогло спасибо =)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB