即使在execute()之后放置,lastInsertId()也返回0

时间:2015-05-24 10:55:28

标签: php mysql ajax

这是我的代码:它为最后插入的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;
          });
        });

0 个答案:

没有答案