SQL插入和更新同时进行

时间:2014-06-26 15:17:03

标签: php mysql sql

嘿我有一个查询会在表格中插入一个新数据,我希望在同一时间用我输入的新数据的id更新一个外部表。例如:

mysql_query("INSERT INTO `test` (`name`) VALUES ('Mark')");
$query = mysql_query("SELECT `id` FROM `test` WHERE `name` = 'Mark'");
$id = mysql_result($query,0);
mysql_quey("UPDATE `test2` SET `test_id` = $id WHERE `name` = 'Mark'");

我如何同时做到这一点?因为这样做我只插入新数据而我不更新另一个。

Cumps。

2 个答案:

答案 0 :(得分:2)

试试这个:

mysql_query("INSERT INTO `test` (`name`) VALUES ('Mark')");
$id = mysql_insert_id();
mysql_quey("UPDATE `test2` SET `test_id` = $id WHERE `name` = 'Mark'");

我已经在第一次插入中将反引号更改为单引号,反引号永远不应该用于字段值。

此外我已将其更改为仅使用两个查询,mysql_insert_id()将获取最后插入的ID,而无需您查询。

参考:http://www.php.net/manual/en/function.mysql-insert-id.php

答案 1 :(得分:0)

首先,您不需要select来获取id,因此有mysql_insert_id()

然后你必须使用一个事务来让两个查询同时执行:

mysql_query('BEGIN');
mysql_query("INSERT INTO `test` (`name`) VALUES ('Mark')");
$id = mysql_insert_id();
mysql_query("UPDATE `test2` SET `test_id` = $id WHERE `name` = 'Mark'");
mysql_query('COMMIT');

事务确保两个语句都被执行,并且不会以任何方式在它们之间传递任何其他脚本。