如何使用 PHP 仅检测 AUTO_INCREMENTed 值? [复制]

Posted

技术标签:

【中文标题】如何使用 PHP 仅检测 AUTO_INCREMENTed 值? [复制]【英文标题】:How can I detect just AUTO_INCREMENTed value with PHP? [duplicate] 【发布时间】:2014-02-17 17:08:10 【问题描述】:

你好!

我想知道,刚刚在我的mysql 表中为A_I 方法分配了什么值。我无法通过指定其他值来查找它,因为其中至少有两个可能是相同的。我真的被困住了。

假设我正在使用这个简单的代码来INSERT new VALUES

INSERT INTO my_table (`Auto_Incremented_Value`, `My_Column`) VALUES (NULL, '$my_value');

现在我需要知道Auto_Incremented_Value 列的最后一个值是什么,因为我必须使用这个值才能将它分配给另一个表作为指向该对象的链接。

实际上,我允许一些人在我的服务器上上传图片,这些图片与他们所属的一些产品相关联。我有两个表来处理这个问题。第一个(products 表)使用AUTO_INCREMENT 而第二个(images 表)没有,因为我在那里存储上传图像的完整路径,小描述和链接到指定的产品。我需要将Auto_Incremented_Value 作为链接存储在我的images 表中。

附:如果我能用 php 解决它,我会很高兴。

谢谢!

【问题讨论】:

【参考方案1】:

您应该为此使用MySQLI Insert ID。

$query = "INSERT INTO my_table (`Auto_Incremented_Value`, `My_Column`) VALUES (NULL, '$my_value')";
$mysqli->query($query);

printf ("New Record has id %d.\n", $mysqli->insert_id);

【讨论】:

【参考方案2】:

如果您使用mysqli,您可以在执行查询后立即使用mysqli_insert_id() 检索自动递增的值:

$result = mysqli_query($link, "Insert into someTable values (null, 'a','b','c')") or die(mysqli_error($link));

$last_id = mysqli_insert_id($link);

对于 PDO,您可以执行类似的操作并使用 PDO::lastInsertId 来检索值。

【讨论】:

【参考方案3】:

如果您使用的是 PDO,您可以像这样获取新值:$nextAIValue = $pdo->lastInsertId(); 如果您使用的是 mySQLi,请使用:$nextAIValue = mysqli_insert_id(); 如果您使用的是普通的 mysql_* 函数(但已弃用),请获取如下值:$nextAIValue = mysql_insert_id();

【讨论】:

为什么建议针对已弃用库的解决方案/mysqli 呢? 我已经编辑了我的答案。但是,如果您查看此处的 PHP 问题,您会注意到大量开发人员仍在使用mysql_*。悲伤但真实。所以我决定为 OP 提供这个解决方案,以防万一。

以上是关于如何使用 PHP 仅检测 AUTO_INCREMENTed 值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检测仅使用 cppcheck 从未使用的函数中调用的函数?

如何仅使用 CSS 移动屏幕进行检测

如何在张量流对象检测中仅检测特定类别的对象

如何仅检测本机 Android 浏览器

使用 php 进行可靠的用户浏览器检测

如何仅在 CGRect 中使用 Apple Vision 检测条形码?