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]   

> Без описания
KEFIR4UK
Отправлено: 10 Февраля, 2015 - 15:12:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Апр. 2014  


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




Добрый день!Нужно плучтиь идентификатор последней вствленной записи, делал с помощью lastInsertId но метериться "Call to undefined method PDOStatement::lastInsertId()" кусок кода :
PHP:
скопировать код в буфер обмена
  1.  
  2.                 if($this->validate()){
  3.                         $db_obj=Database::getInstance();
  4.                         $dbh=$db_obj->connect()->prepare("INSERT INTO $this->table(email,pass) VALUES(?,?)");
  5.                         $dbh->bindParam(1,$this->email);
  6.                         $dbh->bindParam(2,$this->password);
  7.                         $dbh->execute();
  8.                         session_start();
  9.                                 $_SESSION['id_user']=$dbh->lastInsertId();
  10.                        
  11.                 }
  12.  

Матерится на 9 строчке.Класс Database - соединаеться с базой
вот он сам:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Database{
  3.         static private $Instance = NULL;
  4.         public $dbh;
  5.         private $host="localhost";
  6.         private $user="root";
  7.         private $password="";
  8.         private $db="testdb";
  9.         protected function __clone() {}
  10.         protected function __construct() {}
  11.         static public function getInstance(){
  12.                 if(self::$Instance ==NULL){
  13.                         self::$Instance = new Database();      
  14.                 }
  15.                 return self::$Instance;
  16.         }      
  17.                 function connect(){
  18.                 try{
  19.                  $this->dbh=new PDO("mysql:host=$this->host;dbname=$this->db",$this->user,$this->password);
  20.                 $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  21.                 $this->dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
  22.                 eturn $this->dbh;
  23.                         }catch(PDOException $e){
  24.                                 die($e->getMessage());
  25.                         }      
  26.                 }
  27. }
  28.  

Подозреваю что ошибка в етом классе, но понять не могу где

(Отредактировано автором: 10 Февраля, 2015 - 15:15:49)

 
 Top
Zuldek
Отправлено: 10 Февраля, 2015 - 15:15:45
Post Id


Постоянный участник


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


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




PDO::lastInsertId();

(Отредактировано автором: 10 Февраля, 2015 - 15:28:29)

 
 Top
KEFIR4UK
Отправлено: 10 Февраля, 2015 - 15:17:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Апр. 2014  


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




Zuldek пишет:
dbh::lastInsertId
тоже самое
 
 Top
Bio man
Отправлено: 10 Февраля, 2015 - 15:27:31
Post Id


Постоянный участник


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


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




Так это же свойство PDO а не PDOStatement. Читайте внимательно доки
 
 Top
KEFIR4UK
Отправлено: 10 Февраля, 2015 - 16:12:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Апр. 2014  


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




Bio man пишет:
Так это же свойство PDO а не PDOStatement. Читайте внимательно доки

Сделал так $db_obj->lastInsertId(); но теперь говорит что нет та ткого метода в класса Database. Создал
такой метод
function lastInsertId(){
$this->dbh->lastInsertId();
}
Но теперь возвращает NULL а не ошибку
 
 Top
Мелкий Супермодератор
Отправлено: 10 Февраля, 2015 - 16:15:10
Post Id



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


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


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




KEFIR4UK пишет:
такой метод
function lastInsertId(){
$this->dbh->lastInsertId();
}

Так он ничего и не возвращает.


-----
PostgreSQL DBA
 
 Top
KEFIR4UK
Отправлено: 10 Февраля, 2015 - 16:20:04
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Апр. 2014  


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




Не могу понять где туплю Нахмурился
 
 Top
Мелкий Супермодератор
Отправлено: 10 Февраля, 2015 - 16:27:13
Post Id



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


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


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




Так сходите погулять/попить чаю/поспать/etc
Есть в коде этого метода недостаток одного слова, и слово это return.


-----
PostgreSQL DBA
 
 Top
KEFIR4UK
Отправлено: 10 Февраля, 2015 - 16:49:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Апр. 2014  


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




Мелкий пишет:
и слово это return
Убрал по очереди два ретурна но тогда не видит другиг методов класса=/
 
 Top
Sail
Отправлено: 10 Февраля, 2015 - 16:55:13
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


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




KEFIR4UK пишет:
Убрал по очереди два ретурна но тогда не видит другиг методов класса=/

Почему убрал?! Добавлять надо... в метод, который lastinsertid не возвращает.
И, кстати, там в одном месте в коде первого сообщения 'r' в этом волшебном слове пропущена...
 
 Top
KEFIR4UK
Отправлено: 10 Февраля, 2015 - 17:11:18
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Апр. 2014  


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




Недочет....спасибо Sail!
 
 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