如何用PHP检测AUTO_INCREMENTed值?

时间:2014-01-27 00:13:40

标签: php mysql sql auto-increment

您好!

我想知道,我的A_I表格中只分配了MySQL方法的值。我不能通过指定其他值来查找它,因为它们中至少有两个可能是相同的。我真的被卡住了。

假设我使用这个简单的代码INSERT新的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表中的链接。

P.S。如果我能用PHP解决它,我会很高兴。

谢谢!

3 个答案:

答案 0 :(得分:3)

您应该使用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);

答案 1 :(得分:1)

如果您使用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来检索值。

答案 2 :(得分:1)

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