2012-09-19 44 views
-2

Possible Duplicate:
Can't get mysql_insert_id() to work如何添加lastInsertId()?

我想打印使用lastInsertId()在這個函數最後插入的ID:

private function adduser() { 

    if (!empty($this->error)) return false; 

    $params = array(
     ':user_level' => parent::getOption('default-level'), 
     ':name'  => $this->name, 
     ':email'  => $this->email, 
     ':username' => $this->username, 
     ':password' => parent::hashPassword($this->password) 
    ); 

    parent::query("INSERT INTO `login_users` (`user_level`, `name`, `email`, `username`, `password`) 
        VALUES (:user_level, :name, :email, :username, :password);", $params); 

    $shortcodes = array(
     'site_address' => SITE_PATH, 
     'full_name'  => $this->name, 
     'username'  => $this->username, 
     'email'   => $this->email, 
     'password'  => $this->password 
    ); 

    $subj = parent::getOption('email-add-user-subj'); 
    $msg = parent::getOption('email-add-user-msg'); 
    $cid = parent::lastInsertId(); 

    if(!parent::sendEmail($this->email, $subj, $msg, $shortcodes)) 
     $this->error = _('ERROR. Mail not sent'); 

    $this->result = "<div class='alert alert-success'>" . sprintf(_('Successfully added user <b>%s</b> to the database. Credentials sent to user.'), $cid) . "</div>"; 

} 

我加入了這一點:

$cid = parent::lastInsertId(); 

,然後加入$ CID here:

$this->result = "<div class='alert alert-success'>" . sprintf(_('Successfully added user <b>%s</b> to the database. Credentials sent to user.'), $cid) . "</div>"; 

但我不斷收到:

Fatal error: Call to undefined method Generic::lastInsertId() in 

數據庫連接看起來是這樣的:

public function dbConn() { 

    include(dirname(__FILE__) . '/config.php'); 

    try { 
     self::$dbh = new PDO("mysql:host={$host};dbname={$dbName}", $dbUser, $dbPass); 
     self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
    } catch (PDOException $e) { 
     return '<div class="alert alert-error">'._('Database error: '). $e->getMessage() . '</div>'; 
    } 


} 

任何想法如何,我應該適當加lastInsertId()

+1

你用於DB的框架/類是什麼? – rkosegi

+0

raina77ow,是的,因爲我發現這與mysql_insert_id()無關,因爲這是PDO。 – Dreni

+0

raina77ow,對不起,這不是Magento,這是一個用戶登錄腳本,我試圖通過添加lastInsertId()來修改,但我無法讓它工作。 – Dreni

回答

0

LastInsertID是一種PDO類的方法。

要調用它的Generic類,有沒有一種方法LastInsertID();

+0

那麼我怎麼稱呼它是正確的? – Dreni

+0

http://php.net/manual/en/pdo.lastinsertid.php – Dev

+0

我試過$ cid = PDO :: lastInsertId();並且得到了這個錯誤:致命錯誤:非靜態方法PDO :: lastInsertId()不能靜態調用,假設 – Dreni

2

更換

$cid = parent::lastInsertId(); 

self::$dbh->lastInsertId(); 

...因爲(它看起來像)連接對象存儲在我們正在討論的這個匿名類的dbh字段中。