почему pdo-> lastInsertId () возвращает 0, когда я вызываю STORED PROCEDURE в mysql?

Мне нужно вернуть id последней вложенной строки в моей базе данных:

У меня есть класс с именем DatabaseHandler для использования pdo

<?php class DatabaseHandler { private static $_mHandler; private function __construct() {} private static function GetHandler() { if (!isset(self::$_mHandler)) { try { self::$_mHandler = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD, array(PDO::ATTR_PERSISTENT => DB_PERSISTENCY)); self::$_mHandler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); self::$_mHandler->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); } catch (PDOException $e) { self::Close(); trigger_error($e->getMessage(), E_USER_ERROR); } } return self::$_mHandler; } public static function Close() { self::$_mHandler = null; } public static function Execute($sqlQuery, $params = null) { try { $database_handler = self::GetHandler(); $statement_handler = $database_handler->prepare('set names utf8; ' . $sqlQuery); $statement_handler->execute($params); $result=$database_handler->lastInsertId(); }catch(PDOException $e){ self::Close(); trigger_error($e->getMessage(), E_USER_ERROR); } return $result; }?> 

и ЗАПОМНЕННАЯ ПРОЦЕДУРА в mysql db:

  CREATE PROCEDURE `sp_users_Insert`(IN _username VARCHAR(50), IN _email VARCHAR(50), IN _password CHAR(32), IN _ip VARCHAR(15), IN _reg_date INT, IN _ref_id MEDIUMINT) BEGIN INSERT INTO n_users (username , email , password , ip , reg_date , ref_id ) VALUES(_username , _email , _password , _ip , _reg_date , _ref_id ); END$$ 

и когда я вызываю это так, запись базы данных создается, но lastInsertId () возвращает 0:

 $username =me; $email=me@me.com; $password =msadss; $ip =12.0.0.1; $reg_date =1347284764; $ref_id =12; $sql = 'CALL `sp_users_Insert`(:username,:email,:password,:ip,:reg_date,:ref_id)'; $params = array (':username' => $username, ':email' => $email, ':password' => $password, ':ip' => $ip, ':reg_date' => $reg_date, ':ref_id' => $ref_id); DatabaseHandler::Close(); return DatabaseHandler::Execute($sql, $params); 

Что я делаю неправильно?

    Попробуйте выполнить последнюю команду в своей процедуре:

     SELECT LAST_INSERT_ID();