想要对两个不同的表执行双MYSQL INSERT INTO

时间:2011-06-28 09:38:58

标签: php mysql insert

我希望能够使用php插入两个不同的mysql表,第二个mysql插件依赖于第一个插入的成员id。

例如:

mysql_query("
    INSERT INTO `member_users` (
        `id`, 
        `first_name`, 
        `last_name`, 
        `username`, 
        `password`, 
        `address1`, 
        `address2`, 
        `postcode`, 
        `access`, 
        `expires`
    ) VALUES (
        NULL, 
        '$fname', 
        '$lname', 
        '$email', 
        '$passhash', 
        '$add1', 
        '$city', 
        '$postcode', 
        '', 
        ''
    )"
);

然后我想取这个成员用户的id在同一页面上创建一个mysql_query插入,例如:

mysql_query("
    INSERT INTO `member_orders` (
        `order_id`, 
        `member_id`, 
        `date`, 
        `item`, 
        `size`, 
        `quantity`, 
        `price`, 
        `tracking_id`, 
        `status`, 
        `item_sent`, 
        `notes`
    ) VALUES (
        NULL, 
        '$userid', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        ''
    )
");

它可能是一个非常简单的答案和一个非常愚蠢的问题,但似乎无法在任何地方找到答案

提前致谢

6 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要从第一个查询中获取member_id,要在第二个查询中使用,你可以使用PHP函数

$the_member_id = mysql_insert_id();

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

您也可以在不使用该PHP函数的情况下执行此操作

$sql = "SELECT LAST_INSERT_ID()";
// add code here to run the query.

答案 1 :(得分:0)

您可以使用php函数mysql_insert_id()获取您输入数据库的最后一个ID。

EG:

$sql = "INSERT INTO `table` VALUES (NULL, 'Thomas', 'Male')";
$query = mysql_query($sql);
$id = mysql_insert_id();

所以在第一个INSERT之后的问题中你需要这个:

$userid = mysql_insert_id();

然后你的第二个查询就可以了。

答案 2 :(得分:0)

您可以使用mysql_insert_id()获取由上次插入生成的id。

mysql_insert_id — Get the ID generated from the previous INSERT operation

答案 3 :(得分:0)

您可以执行类似于此示例中所做的操作

$sql = "INSERT INTO users(name,gender) VALUES ('$name','$gender')";
$result = mysql_query( $sql,$conn );
$user_id = mysql_insert_id( $conn );
$sql = "INSERT INTO website(site,user) VALUES ('$site',$user_id)";
$result = mysql_query( $sql,$conn );

mysql_insert_id手册

答案 4 :(得分:0)

您可以在第二个SQL语句中使用LAST_INSERT_ID MySQL函数从第一个中获取最后一个插入ID。

mysql_query("
    INSERT INTO `member_orders` (
        `order_id`, 
        `member_id`, 
        `date`, 
        `item`, 
        `size`, 
        `quantity`, 
        `price`, 
        `tracking_id`, 
        `status`, 
        `item_sent`, 
        `notes`
    ) VALUES (
        NULL, 
        LAST_INSERT_ID(), 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        ''
    )
");

如果您使用此方法,我建议您在事务中执行查询。这样就不会在第一次插入和第二次插入之间发生另一次插入,从而抛弃LAST_INSERT_ID的结果。

答案 5 :(得分:0)

执行mysql_query()函数后,您可以通过mysql_insert_id()获取最后插入的表的最后插入的id。

相关问题