За последние 24 часа нас посетили 17795 программистов и 1665 роботов. Сейчас ищут 852 программиста ...

Не могу понять почему у меня используя PDO объекты какая то чушь выводится

Тема в разделе "PHP и базы данных", создана пользователем timur2008, 12 янв 2017.

  1. timur2008

    timur2008 Новичок

    С нами с:
    14 окт 2015
    Сообщения:
    136
    Симпатии:
    2
    Здравствуйте. Только начал осваивать работу с БД используя PDO и видимо все еще чтото не понимаю. У меня в базе есть таблица Problem и в ней поле problemdescription. Далее есть вот такой код
    PHP:
    1. require_once 'regestries\ApplicationRegistry.php';
    2. abstract class Mapper {
    3.     protected static $PDO;
    4.     function __construct() {
    5.         if(!isset(self::$PDO))
    6.         {
    7.             $dsn = ApplicationRegistry::getDSN();
    8.             $request= RequestRegistry::getRequest();
    9.             $login = $request->getProperty('login');
    10.             $pass=$request->getProperty('password');
    11.             if(is_null($dsn))
    12.             {
    13.                 throw new Exception("DSN не определен");
    14.             }
    15.             self::$PDO = new PDO($dsn,$login,$pass);
    16.             self::$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    17.         }
    18.     }
    19.  
    20.     function find($id) {
    21.         $this->selectStmp()->execute(array($id));
    22.         $array= $this->selectStmp()->fetch();
    23.         $this->selectStmp()->closeCursor();
    24.         if(!is_array($array)) {return NULL;}
    25.         if(!isset($array['id'])) {return NULL;}
    26.         $object= $this->createObject($array);
    27.         return $object;
    28.     }
    29.  
    30.     function createObject($array) {
    31.         $obj = $this->createObject($array);
    32.         return $obj;
    33.     }
    34.  
    35.     function insert(DomainObject $obj) {
    36.         $this->doInsert($obj);
    37.     }
    38.  
    39.     abstract function update(DomainObject $object);
    40.     protected abstract function doCreateObject(array $array);
    41.     protected abstract function doInsert(DomainObject $object);
    42.     protected abstract function selectStmp();
    43. }
    PHP:
    1. class ProblemMapper extends Mapper{
    2.  
    3.     function __construct() {
    4.         parent::__construct();
    5.         $this->selectStmp= self::$PDO->prepare("SELECT * from problem where id =?");
    6.         $this->updateStmt= self::$PDO->prepare(
    7.                 "UPDATE problem set problemdescription=? where id=?");
    8.         $this->insertStmt = self::$PDO->prepare("INSERT into problem (problemdescription) values(?)");
    9.     }
    10.  
    11.     function getCollection(array $raw)
    12.     {
    13.         return new ProblemCollection($raw, $this);
    14.     }
    15.  
    16.    
    17.     protected function doCreateObject(array $array) {
    18.         $obj = new Problem($array['id']);
    19.         $obj->setProblemDescription($array['problemdescription']);
    20.         return $obj;
    21.     }
    22.  
    23.     protected function doInsert(\DomainObject $object) {
    24.         $values = array($object->getProblemDescription());
    25.         $this->insertSmtp->execute($values);
    26.         $id = self::$PDO->lastInsertId();
    27.         $object->setId($id);
    28.     }
    29.  
    30.     protected function selectStmp() {
    31.         return $this->selectStmp();
    32.     }
    33.  
    34.     public function update(\DomainObject $object) {
    35.         $values = array($object->getProblemDescription(),$object->getId());
    36.         $this->updateSmtp->execute($values);
    37.     }
    38.  
    39. }
    Вызываю его так
    PHP:
    1. $request = ViewHelper::getRequest();
    2.           $fio = $request->getProperty('fio');
    3.           print_r('Добро пожаловать!!! '. $fio);
    4.      
    5.           $mapper = new ProblemMapper();
    6.           $probl1 = $mapper->find(1);
    7.           print_r($probl1);
    После выполнения код выдает мне вот такую чушь
    PHP:
    1. #0 C:\xampp\htdocs\PhpProject2\Mapper.php(28): PDO->__construct('mysql:host=loca...', 'ang', '123456')
    2. #1 C:\xampp\htdocs\PhpProject2\ProblemMapper.php(17): Mapper->__construct()
    3. #2 C:\xampp\htdocs\PhpProject2\views\SaccusessAutorization.php(22): ProblemMapper->__construct()
    4. #3 C:\xampp\htdocs\PhpProject2\PageController.php(29): include('C:\\xampp\\htdocs...')
    5. #4 C:\xampp\htdocs\PhpProject2\PageControllerManager.php(49): PageController->forward('views\\Saccusess...')
    6. #5 C:\xampp\htdocs\PhpProject2\index.php(29): PageControllerManager->process()
    7. #6 {main}
    Эти классы конечно используются у меня но почему они вдруг начали выводится то ?? Там просто должно выдастся значение колонки problemdescription
     
  2. timur2008

    timur2008 Новичок

    С нами с:
    14 окт 2015
    Сообщения:
    136
    Симпатии:
    2
    Хмм проблема вот в этом месте
    PHP:
    1. $dsn = 'mysql:dbname=mybase;host=localhost';
    2.             $login='ang';
    3.             $pass='123456';
    4.             self::$PDO = new PDO($dsn,$login,$pass);
    Я уже в ручную указал логин пароль и дсн но все тоже самое почему то :(((
     
    #2 timur2008, 12 янв 2017
    Последнее редактирование модератором: 12 янв 2017
  3. timur2008

    timur2008 Новичок

    С нами с:
    14 окт 2015
    Сообщения:
    136
    Симпатии:
    2
    разобрался. Дошло что надо было поймать ошибку try catch ем оказалось что пользователя то я в таблицу юзеров занес но права на работу в базе не дал :)
     
    artoodetoo нравится это.