我使用$insertedId = $pdo_conn->lastInsertId();
在插入查询后获取最后插入的ID,然后运行另一个插入查询:
foreach ($records as $emails_to) {
$stmt = $pdo_conn->prepare("INSERT into emails_to (email_seq, email) values (:email_seq, :email) ");
$stmt->execute(array(':email_seq' => $InsertedId, ':email' => $emails_to["email"]));
}
但它似乎没有识别最后一个插入ID,我收到此错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'email_seq' cannot be null'
我做错了什么?
答案 0 :(得分:6)
$insertedId
和$InsertedId
不一样。变量名称区分大小写。
答案 1 :(得分:4)
您的$insertedID
不匹配$InsertedID
- 案例问题
编辑; darn,殴打到帖子
答案 2 :(得分:3)
在mysql中处理事务时要小心lastInsertId()。以下代码返回0而不是insert id。 这是一个例子
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $dbh->prepare("INSERT INTO test (name, email) VALUES(?,?)");
try {
$dbh->beginTransaction();
$stmt->execute( array('user', 'user@example.com'));
$dbh->commit();
print $dbh->lastInsertId();
}
catch(PDOException $e) {
$dbh->rollback();
print "Error!: " . $e->getMessage() . "</br>";
}
}
catch( PDOException $e ) {
print "Error!: " . $e->getMessage() . "</br>";
}
&GT?;
当没有抛出异常时,lastInsertId返回0.但是,如果在调用commit之前调用lastInsertId,则返回正确的id。
获取更多信息访问 - &gt; PHP