簡體   English   中英

MySQL行已插入但未保存?

[英]MySQL row inserted but not saved?

我正在從PHP向MySQL表中插入一行,並在插入之后立即運行查詢,以獲取剛剛插入的行的鍵值,如下所示:

$stmt = $this->db->prepare("INSERT INTO user(vFirstName, vLastName, vEmail, vPassword, iSkilllevelid, vTournaments, vDays, dAddedDate, eStatus) VALUES (?,?,?,?,4,'Pick-Up','Saturday',NOW(),'Active')");
$stmt->bind_param("ssss", $firstName, $lastName, $email, $pwd);
$stmt->execute();
$stmt->close();

$stmt = $this->db->prepare('SELECT iUserId FROM user WHERE vEmail=?');
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->bind_result($iUserId);
while ($stmt->fetch()) {
    break;
}

執行此代碼后, $iUserId具有正確的自動遞增鍵值(例如1143),但是當我實際查看數據庫表時,具有該鍵的行(1143)不存在。 那怎么可能?

而不是在插入后從表中選擇,您應該使用mysqli::$insert_id

$stmt = $this->db->prepare('
  INSERT INTO user
    (vFirstName, vLastName, vEmail, vPassword, iSkilllevelid,
       vTournaments, vDays, dAddedDate, eStatus)
  VALUES
    (?,?,?,?,4,"Pick-Up","Saturday",NOW(),"Active")
');
$stmt->bind_param('ssss', $firstName, $lastName, $email, $pwd);
$stmt->execute();
$iUserId = $this->db->insert_id;
$stmt->close();

至於為什么未從其他連接中顯示插入的數據的原因,似乎您的事務尚未提交:

$this->db->commit();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM