这是表架构:
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_insert_id()返回0.没有其他进程在运行。 id设置为自动增量。插入完成并在db中看到。
答案 0 :(得分:8)
您正在使用PDO
与数据库进行交互。使用PDO::lastInsertId()
获取最后插入的ID。
$stmt->execute();
echo 'last id was ' . $db->lastInsertId();
mysql_insert_id()
是ext/mysql
扩展程序的一部分。您不能将两个扩展的混合匹配函数与具有相同连接的接口混合。