0

我正在尝试在我的表上运行查询以创建一行并获取它的自动递增的“id”号,然后附加到关联的记录中。我正在使用 php 发送查询,并在我的本地 WAMP 主机和远程主机上对其进行了测试。这是我的代码:

$myemail = someEmailAddress

$q = mysqli_query($cxn,"INSERT INTO `purchases`(`id`, `email`) 
VALUES (NULL , '$myemail'); 
SELECT LAST_INSERT_ID();") or die(mysql_error());

如果我取出这一点:

SELECT LAST_INSERT_ID();

查询运行良好,我得到了一条闪亮的新记录,其中包含正确自动递增的“id”,但将其放回原处,什么也没有发生。顺便说一句,在我的 WAMP 服务器的 phpMyAdmin 的 SQL 窗口中运行相同的查询,我得到了我正在寻找的结果。

我认为问题在于在同一个字符串中运行多个查询。据我所知,语法是正确的,所以我正在运行的服务器有问题吗?

让我解释一下我想要实现的目标。我正在为自己做生意,我希望客户能够在线预订。我想将客户可能想要同时预订的单个事件分组到一张发票​​中。我有一个数组 ($_SESSION[basket]) 收集会话中的数据,并且在预订时我想在我的“购买”表中创建一个新记录,它有一个自动增量主键“id”,当那是创建我需要知道该新记录的“id”值,以便我可以通过具有多对多关系的第三个表将他们预订的事件链接到购买。

谢谢你的帮助。

4

2 回答 2

1

要从最后一个 sql 中获取自动生成的 id,请使用以下命令:

    The mysqli_insert_id() function returns the ID generated by a query on a table with a

 column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE

 statement or if the modified table does not have a column with the AUTO_INCREMENT attribute

, this function will return zero.

只需$mysqli->insert_id在需要时在查询后调用。

抱歉,您使用的是程序样式,您会这样称呼它

mysqli_insert_id($cxn)

于 2013-01-14T23:57:44.223 回答
-1

使用这个功能

function get_last_id()
{
    $q_last = mysql_query("SELECT max(id) as 'id' FROM purchases ") or die(mysql_error());
    return mysql_fetch_assoc($fetch); 
}
于 2013-01-15T00:37:57.880 回答