2012-09-19 212 views
0

我尝试这样做:无法获得mysql_insert_id()工作

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

但我只得到这个错误:

警告:mysql_insert_id():提供的参数不是一个有效的MySQL-Link的资源在

这是整个功能(I加入此$ CID = mysql_insert_id($这个 - >结果);希望检索插入的数据的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'); 

    if(!parent::sendEmail($this->email, $subj, $msg, $shortcodes)) 
     $this->error = _('ERROR. Mail not sent'); 
    $cid = mysql_insert_id($this->result); 
    $this->result = "<div class='alert alert-success'>" . sprintf(_('Successfully added user <b>%s</b> to the database. Credentials sent to user.'), $cid) . "</div>"; 

} 

这是连接到数据库:

<?php 
$host = "xxx"; 
$dbName = "xxx"; 
$dbUser = "xxx"; 
$dbPass = "xxx"; 
?> 
+0

我们需要看到几前述线 - 尤其是在最后设置$这个 - >结果为文本 – BugFinder

+0

哪里是你的查询和指定的结果?请更新一些代码行。 首先,使用'this-> result'作为结果标识符,然后使用它来设置一个字符串似乎不正确。 – bartvanraaij

回答

2

mysql_insert_id()需要资源的链接,即数据库句柄,作为参数不是查询结果。 $this->result包含什么?

+0

更新了我的文章 – Dreni

1

检查Manual

参数mysql_insert_id是Link_Identifier。但我想你是通过结果。尝试

$cid = mysql_insert_id(); 

或者您的$ this-> result必须是由mysql_connect()返回的连接标识符。

+0

导致:警告:mysql_insert_id()[function.mysql-insert-id]:无法建立到服务器的链接 – Dreni

0

你已经在使用PDO,切换到:

$cid = self::$dbh->lastInsertId(); // PDO for mysql_insert_id 
+0

我收到此错误:致命错误:调用未定义的方法Generic :: lastInsertId () – Dreni

+0

这意味着你的父母没有这个功能。你不是在使用PDO吗? –

+0

是的,那么如何将这个功能添加到我的父母? – Dreni