开发者

want to do a double MYSQL INSERT INTO to two different tables

I want to be able to insert into two different mysql tables using php with the second mysql insert being dependent on the member id of the first insert.

For example:

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', 
        '', 
        ''
    )"
);

Then I want to take the id of this member user to create a mysql_query insert on the same page eg:

mysql_query("
    INSERT INTO `member_orders` (
        `order_id`, 
        `member_id`, 
        `date`, 
        `item`, 
        `size`, 
        `quantity`, 
        `price`, 
        `tracking_id`, 
        `status`, 
        `ite开发者_运维技巧m_sent`, 
        `notes`
    ) VALUES (
        NULL, 
        '$userid', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        ''
    )
");

its probably a really easy answer and a really silly question but cannot seem to find the answer anywhere

thanks in advance


If I have understood correctly, and you need to get the member_id from the first query, to use in the second query, you can use the PHP function

$the_member_id = mysql_insert_id();

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

You can also do it without using that PHP function

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


You can use the php function mysql_insert_id() to get the last id you input into the database.

EG:

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

So in your question after the first INSERT you need this:

$userid = mysql_insert_id();

Then your second query will work.


You can use mysql_insert_id() to get id, generated by last insert.

mysql_insert_id — Get the ID generated from the previous INSERT operation


You could use the LAST_INSERT_ID MySQL function in your second SQL statement to get the last insert ID from the first.

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(), 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        '', 
        ''
    )
");

I would recommend that if you use this approach then you execute the queries within a transaction. That way there's no way that another insert can occur between your first insert and your second, thus throwing off the result of LAST_INSERT_ID.


After executing mysql_query() function you can get lastly inserted id of lastly inserted table by mysql_insert_id().


You can do something like what is done in this example

$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 );

Manual for mysql_insert_id

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜