这是我的代码:它为最后插入的id返回0。我在网上引用了很多样本,他们都说,必须在execute()之后和commit()之前调用lastInsertId。但是在我下面的代码中,我没有使用提交。为什么它仍然会返回0?
try
{
$stmt2 = $pdo->prepare('INSERT INTO usrinfo (UUID,Name,Phone,Email,Postcode,DateReg,Reputation,ReviewPlus,ReviewNeg,Sex,Status,IsTuitionCentre) VALUES(:uuid,:name,:phone,:email,:poscode,now(),:reputation,:reviewplus,:reviewneg,:sex,:status,:permission)');
$stmt2->execute(array(
':uuid' => $unique_id,
':name'=>$name,
':phone'=>$phone,
':email'=>$email,
':poscode'=>$postcode,
':reputation'=>78,
':reviewplus'=>65,
':reviewneg'=>3,
':sex'=>$gender,
':status'=>0,
':permission'=>$permission
));
echo $lastinsertid = $pdo->lastInsertId();//returns 0
# Affected Rows?
echo $stmt2->rowCount(); // 1
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
编辑:
现在我明白了,lastInsertId()
仅适用于AUTO_INCREMENT。我意识到我可以简单地将$ unique_id传递给ajax页面!现在问题是,我无法通过它。
我尝试了回复$unique_id;
//但没有显示提示框
有趣的是,如果我只是为下面的变量赋值,它就可以通过!这是什么原因?
echo $abc ="123";
AJAX:
$("document").ready(function(){
$(".form").submit(function(){
var data = {
"action": "test"
};
data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "POST",
dataType: "json",
url: "response.php", //Relative or absolute path to response.php file
data: data,
success: function(data) {
//$(".the-return").html("<br />JSON: " + data["json"] );
// alert("Form submitted successfully.\nReturned json: " + data["json"]);
alert(data);
// window.location='success.php'
}
});
return false;
});
});