问题标签 [mysql-insert-id]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
494 浏览

php - MySQL外键关系与mysql_insert_id关联表

这是一种概念证明草案,以使事情正常进行,但不想拥有完全废话的代码。对于我的数据库,我尝试使用 innoDB 获得真正的外键关系,但无法获得。

我决定不使用外键,而是在插入后提取 mysql_insert_id() ,将其保存为变量,然后将该变量放入相关表中。

这很可怕吗?一切似乎都运行良好,我可以根据需要连接和关联 ID。使用外键对我的方法有什么好处(除了更新/删除级联)?

0 投票
1 回答
1627 浏览

php - mysqli::insert_id 在重复键上返回错误的 id

在 PHP 中使用 mysqli::insert_id 进行 INSERT INTO ON DUPLICATE KEY UPDATE 时,如果行已更新,我将继续获取下一个自动增量而不是更新的行。在同一个数据库但在另一个表中,使用 ON DUPLICATE KEY UPDATE 时我没有这种行为。相反,我得到了更新行的 id。但是现在由于某种原因,在我创建的新表中,我不断得到下一个甚至不存在的 id。这两个表都是 MyISAM,并且有一个自动增量字段。我不明白为什么他们的行为不同。

例子:

有任何想法吗?

0 投票
2 回答
1102 浏览

php - 如何将 mysql_insert_id() 传递给 $_POST 或表单操作?

我有一个表单页面,其中提交了 INSERT 或 UPDATE 查询,具体取决于 ID 的存在/不存在(当有 ID 时,它用于检索记录并预填充表单)。在任何一种情况下,处理都在 form.php 中,因此表单的操作本身就是 ( action="/form.php">)。我的问题是,当 form.php 在提交后重新加载时,URL 的 ID 为空,因此页面进入“插入”模式,而不是“更新”模式。解决此问题的最佳实践方法是什么?

  1. 我应该在这个'if'中添加什么运算符/条件......

    if (isset($_GET['ID']) && is_numeric($_GET['ID'])) {

... 包括提交后的空 ID URL(即,form.php?ID=

或者,

  1. 如何将 `$newID = mysql_insert_id();1 传递给表单的操作?(我在这里尝试了许多变体,但都没有成功)

    $newID = mysql_insert_id(); ... [剪辑] ... <form method="post" action="/html/form.php?ID=<?php echo $newID; ?>">

我正在阅读有关隐藏输入和会话的信息,但我还不清楚如何使用它们来解决这个问题。最后,由于重新加载表单页面不是绝对必要的,我越来越倾向于将表单处理/数据库查询移动到另一个页面(例如 process.php)以希望简化。对此有何看法?什么是最佳/常见做法?

提前谢谢了,

svs

0 投票
3 回答
124 浏览

php - mysql_insert_id 和我的烦恼?

我正在尝试获取行的自动递增列。代码将解释,但基本上我试图将一行插入一个名为 orders 的表中,然后我想获得自动递增的数字。这是我的PHP。



在这个阶段,我真正想做的就是回显自动编号。

这是我的结构



任何帮助将不胜感激,谢谢:)

0 投票
1 回答
188 浏览

php - mysql_insert_id() 查看最后插入记录的值

我有一个将数据插入 mysql 数据库的 PHP 脚本。该表有一个自动增量列。

我想使用 mysql_insert_id() 函数来获取最后插入记录的值。

由于某种原因,这将返回值 0,其中 autoid 列的值为 300037。

任何帮助表示赞赏。谢谢你。

我的代码片段如下:

0 投票
4 回答
37744 浏览

php - mysql_insert_id() 返回 0

我知道有很多相同标题的主题。但主要是查询被插入了错误的位置。但我认为我把它放对了。所以问题是,即使将数据插入数据库,我仍然得到 0。有人知道我可能错的答案吗?

这是我的代码:

提前非常感谢,因为我已经为此烦恼了几乎一整天。(可能是小而愚蠢的东西)

0 投票
1 回答
4349 浏览

php - mysql_insert_id 和 last_insert_id 错误行为

我有这张桌子

a_b 是唯一键。

我有这样的php代码

通过运行此代码两次,在我的电脑上结果是第一次

第二

您可以看到,两次 mysql_insert_id() 返回相同的值“1”,这对我来说很好,因为我想知道插入后的真实 id,而不是下一个 auto_increment 值。

但是当我在另一个环境中运行此代码两次时:第一次

第二

如您所见,第二次的结果 mysql_insert_id() 返回与 last_insert_id() 相同的值。

这个结果很可怕,但我不知道为什么。我的代码在这两种环境下都运行了大约 3 个月,直到今天才发生这种情况。有人可以解释吗?我确实在大约 30 天前将第二个环境的 PHP 版本升级到了 5.3.8,没有其他变化。这是一个错误吗?

更新

我切换到第三个mysql服务器(5.1.38-log),第二个insert return int(0) array(1) { ["last_insert_id()"]=> string(1) "0" }

所以我意识到问题可能与mysql版本有关。

最后,我将表定义更改为这个

还编辑我的脚本

不同的mysql服务器返回相同的mysql_insert_id但不同的last_insert_id()

5.0.24a-社区-nt

5.0.51a-日志

5.1.38-日志

是否有任何系统变量控制这种行为?如果有人知道那将是欢迎的。如果没有解决方案,我唯一能做的就是像这样强制插入以更新一些具有不同值的字段......

0 投票
5 回答
7505 浏览

php - 获取最后一个 ID 并显示它

我一直在环顾四周,但大多数教程都在显示,mysql_insert_id()但它在同一个文档上。我想知道是否有一种方法可以让您获取列的最后一个 id 并将其回显。

这是我的代码,它从数据库中获取图像并将 blob 变成一个 id?=1,它是图片,但作为 php.ini 文件。那是来自另一个 php 文档的上传者,但我正在输入以输出另一个页面上该列的最后一个 id(不是图片,而是统计数字)

一些可以做到这一点的代码将非常有帮助。

0 投票
3 回答
3925 浏览

mysql - MYSQL 如果不存在则插入数据

伙计们,出于某种原因,我使用此代码在我的数据库中插入重复记录

实际的说法是这样的

DB现在看起来像

我认为这INSERT IGNORE应该忽略重复项?这是怎么回事?

编辑这是我的表结构,我试图将其inspection_number用作我的唯一索引来进行比较。

0 投票
2 回答
2948 浏览

php - 用于 MySQL UUID() 主键的 PHP mysql_insert_id()?

是否有一些等效于 PHPmysql_insert_id来获取最后插入的 UUID() 主键?(我总是得到 0。它适用于 auto_inc 整数)