Php 运行Insert查询获取Id并用Id更新另一个表

Php 运行Insert查询获取Id并用Id更新另一个表,php,mysql,mysql-insert-id,Php,Mysql,Mysql Insert Id,我需要在表中插入一个新行,然后获取该行的ID并更新另一个表。 这就是我所拥有的: $leadSQL="INSERT INTO $leadsTable (leadName, leadStatus, leadDescription, leadOpportunity, leadSource, leadSourceDescription, id, leadSince, contactID) VALUES ('$_POST[leadName]', '$_POST[

我需要在表中插入一个新行,然后获取该行的ID并更新另一个表。 这就是我所拥有的:

$leadSQL="INSERT INTO $leadsTable (leadName, leadStatus, leadDescription, leadOpportunity, leadSource, leadSourceDescription, id, leadSince, contactID)
                     VALUES ('$_POST[leadName]', '$_POST[leadStatus]', '$_POST[leadDescription]', '$_POST[leadOpportunity]', '$_POST[leadSource]', '$_POST[leadSourceDescription]','$_POST[id]','$leadSince','$_POST[contactID]')";
$leadQuery = mysql_query($leadSQL);
$lastLeadID = mysql_insert_id();
$updateContactSQL = "UPDATE $contactsTable SET leadID = $lastLeadID WHERE contactID = $_POST[contactID]";
$updateContactQuery = mysql_query($updateContactSQL);

一切正常。。除了在leads表中插入重复的行之外。我曾尝试将update查询放入if语句中,它也执行了相同的操作(这只是为了尝试“某些东西”)。如果我删除$lastID=mysql_insert_id();它只插入一行,但显然不会更新contacts表。所以我很确定它必须与mysql_insert_id()配合使用。我需要它用插入leads表的行的新id更新contacts表。任何想法都将不胜感激

无论出于何种目的,你所拥有的应该是有效的

不过你可以试着稍微修剪一下脂肪。由于查询不需要资源(它是一个INSERT),因此可以去掉该变量。我只是把mysql\u insert\u id()放在update语句中

像这样:

$leadSQL="INSERT INTO $leadsTable (leadName, leadStatus, leadDescription, leadOpportunity, leadSource, leadSourceDescription, id, leadSince, contactID)
                     VALUES ('$_POST[leadName]', '$_POST[leadStatus]', '$_POST[leadDescription]', '$_POST[leadOpportunity]', '$_POST[leadSource]', '$_POST[leadSourceDescription]','$_POST[id]','$leadSince','$_POST[contactID]')";
mysql_query($leadSQL);
$updateContactSQL = "UPDATE $contactsTable SET leadID = '".mysql_insert_id()."' WHERE contactID = $_POST[contactID]";
mysql_query($updateContactSQL);

谢谢你的建议,但我怀疑这并不能解决我的问题。你知道为什么它会插入重复的行吗?我有这样一个:foreach($a=>$b){$body.=sprintf(“%20s:%s\n”,$b,$\u REQUEST[$a]);},它只用于通过电子邮件发送$\u POST数据。这个问题超出了范围,我想我已经缩小了范围。在包含insert和update查询的if语句之外,我有以下代码:if(!mysql_query($leadSQL,$link)){die('Error:'.mysql_Error());当我删除它时,它现在不再添加重复的行。}好的,那就是你的问题了。这个mysql\u query($leadSQL)将再次执行查询函数,该函数将插入另一行。因此,如果查询失败,您是否建议我无需检查?