Как вставить PK (первичный ключ) в Table1 в FK (внешний ключ) в Table2 и показать его результат - PullRequest
0 голосов
/ 22 июля 2011

У меня проблемы с MySQL и PHP.Прежде всего у меня есть 2 таблицы:

table_customer

  • id_cust -> auto_increment, не нуль и PK
  • cust_name
  • address
  • sex

table_list

  • id_list -> auto_increment, не нуль и PK
  • id -> FK из table_customer
  • list_name
  • detail

Я хочу спросить, как вставить данные в эти таблицы, таблица customer должна быть заполнена, но table_list был необязательным, тогда как показать его с помощью PHP, потому чтоЯ пытался это не удалось.Я надеюсь, что кто-то может мне помочь.

Мой php-код выглядит так:

<?php

$insert = mysql_query("INSERT INTO id_cust (cust_name, address, sex)
VALUES ('$name', '$address', 'sex')");

?>

Я не понял, куда мне поместить команду SELECT для вставки в таблицы FK.

1 Ответ

0 голосов
/ 22 июля 2011

Запросы, которые вы должны выполнять в следующем порядке:

//to begin transaction (lock the table)
BEGIN

//insert your customer
INSERT INTO table_customer (cust_name, address, sex) VALUES ( '$name' , '$address', '$sex')

//select last auto generated ID from customer table
SELECT id FROM table_customer ORDER BY id DESC LIMIT 1

//fetch the id selected in last query to $cID and use it in this query
INSERT INTO table_list (id, list_name, detail) VALUES ( $cID, '$listName', '$detail' )

//commit changes and end transaction
COMMIT

Помните, что это всего лишь пример, и я не написал никакого php-кода (я полагаю, вы можете сделать это самостоятельно).Чтобы заставить его работать, вам придется менять кусочки.но ключ в том, чтобы заблокировать и разблокировать таблицу (использовать транзакцию), чтобы никакие другие строки не могли быть добавлены клиентам, прежде чем вы на самом деле получите последний идентификатор ...

...