mysql_insert_id()0,但插入成功完成

nuw*_*way 0 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) DEFAULT '-1',
  PRIMARY KEY (`id`)
)   
Run Code Online (Sandbox Code Playgroud)

在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() .'}}'; 
    }
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么mysql_insert_id()返回0.没有其他进程在运行.id设置为自动增量.插入完成并在db中看到.

And*_*ore 8

您正在使用PDO与数据库的接口.使用PDO::lastInsertId()获得最后插入的ID.

$stmt->execute();
echo 'last id was ' . $db->lastInsertId();
Run Code Online (Sandbox Code Playgroud)

mysql_insert_id()ext/mysql扩展的一部分.您不能将两个扩展的混合匹配函数与具有相同连接的接口混合.