我正在尝试在我的表上运行查询以创建一行并获取其自动递增的“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”值,以便我可以通过第三个表与多对多关系将他们预订的事件链接到购买。
感谢您的帮助。
答案 0 :(得分: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)
答案 1 :(得分:-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);
}