php - MySQL 行已插入但未保存?

标签 php mysql

我正在从 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();

关于php - MySQL 行已插入但未保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14427840/

相关文章:

php - 尽管有唯一索引,但重复的记录被插入到 mysql 表中

mysql查询在不同的服务器上给出不同的结果

php - 将php mysql数据拆分为每列20行

php - 单击单选按钮后的操作

php - WooCommerce:找不到 woocommerce/模板/目录

php - 5 个字符后自动换行

php mysql连接存在

javascript - 如何使用 PHP 中的 ID 数组从 mysql 表中删除多行

php - 使用 foreach 语句选择 $_POST 返回错误

javascript - 如何将谷歌日历集成到我的应用程序中