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 - Mysqli选择具有相同ID和总和的多行然后返回PHP

mysql - 如何将实时mysql数据库连接到本地php和net应用程序?

php - 如何在本地计算机上测试Telegram Bot Webhook?

php - 为什么 LinkedIn v2 Share API 在任何 v2/shares 端点上都没有提供足够的权限错误?

mysql - 为什么我的 UPDATE ... WHERE ... ORDER BY .. LIMIT 1 语句需要这么长时间?

mysql - rails 隐藏字段和/或 sql 数据库关系

mysql - Mysql每日下载计数器

mysql - 根据多列对结果行进行排序

php - 在 php 中使用正则表达式查找结果 str

PHP:$_GET 中的奇怪字符串编码