хочу сделать двойной MYSQL INSERT INTO для двух разных таблиц - PullRequest
1 голос
/ 28 июня 2011

Я хочу иметь возможность вставлять в две разные таблицы mysql, используя php, причем вторая вставка mysql зависит от идентификатора члена первой вставки.

Например:

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

Затем я хочу использовать идентификатор этого пользователя-члена для создания вставки 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 ]

1 голос
/ 28 июня 2011

Если я правильно понял, и вам нужно получить 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.
0 голосов
/ 28 июня 2011

После выполнения функции mysql_query () вы можете получить последний вставленный идентификатор последней вставленной таблицы с помощью mysql_insert_id ().

0 голосов
/ 28 июня 2011

Вы можете использовать функцию MySQL LAST_INSERT_ID во втором операторе SQL, чтобы получить последний идентификатор вставки из первого.

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.

0 голосов
/ 28 июня 2011

Вы можете сделать что-то наподобие того, что сделано в этом примере

$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

0 голосов
/ 28 июня 2011

Вы можете использовать mysql_insert_id (), чтобы получить идентификатор, сгенерированный последней вставкой.

mysql_insert_id — Get the ID generated from the previous INSERT operation
0 голосов
/ 28 июня 2011

Вы можете использовать функцию php mysql_insert_id(), чтобы получить последний идентификатор, введенный вами в базу данных.

EG:

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

Так что в вашем вопросе после первого INSERTвам нужно это:

$userid = mysql_insert_id();

Тогда ваш второй запрос будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...