Php mysql\u insert\u id()0,但插入已成功完成

Php mysql\u insert\u id()0,但插入已成功完成,php,mysql,insert,Php,Mysql,Insert,这是表架构: CREATE TABLE `USERS` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `email` varchar(30) DEFAULT '', `first_name` varchar(15) DEFAULT '', `last_name` varchar(15) DEFAULT '', `password` varchar(15) DEFAULT '', `gender` int(1) DEFAU

这是表架构:

CREATE TABLE `USERS` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(30) DEFAULT '',
  `first_name` varchar(15) DEFAULT '',
  `last_name` varchar(15) DEFAULT '',
  `password` varchar(15) DEFAULT '',
  `gender` int(1) DEFAULT '-1',
  PRIMARY KEY (`id`)
)   
在php中:

    $sql = 'INSERT INTO Users (email, first_Name, last_Name, password, gender ) VALUES                ("'.$email.'", "'.$first_name.'", "'.$last_name.'", "'.$password.'", '.$gender.')';

try {
    $db = getConnection();
    $stmt = $db->prepare($sql);  
    $stmt->execute();
    //$user = $stmt->fetchObject();
    echo 'last id was '.mysql_insert_id();

    $db = null;


    } catch(PDOException $e) {
            echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }

我不明白为什么mysql\u insert\u id()返回0。没有其他进程正在运行。id设置为自动递增。插入完成并在db中显示

您正在使用
PDO
与数据库接口。用于获取最后插入的id

$stmt->execute();
echo 'last id was ' . $db->lastInsertId();

mysql\u insert\u id()
ext/mysql
扩展的一部分。您不能将两个扩展中的匹配函数与同一连接的接口混合使用。

是否执行了
$stmt->execute()
do
mysql\u query
?您将PDO与旧的
mysql\ucode>驱动程序混合使用,这就是问题所在