我有以下数据:
Array
(
[teacher_street] => Okhla
[teacher_city] => Delhi
[teacher_state] => National Capital Territory of Delhi
[teacher_pin] => 110025
)
我需要将上述数据插入一个名为address的表中:
CREATE TABLE `address` (
`address_id` int(11) NOT NULL,
`address_street` varchar(255) NOT NULL,
`city_id` int(11) NOT NULL,
`state_id` int(11) NOT NULL,
`address_pin` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
现在,我需要先在city表和state表中插入city和state,如果它们不存在的话。如果它们存在,我需要获取对应于它们的主键:
CREATE TABLE `city` (
`city_id` int(11) NOT NULL,
`city_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `state` (
`state_id` int(11) NOT NULL,
`state_name` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
之后,我需要得到相应的主键,并需要把第一个表。我怎样才能一蹴而就呢?
1条答案
按热度按时间gblwokeq1#
您的城市和州表似乎没有自动递增主键。在插入这些表时,必须指定值。
如果是这样,那么您的应用程序代码就具有它刚刚插入的值,并且您可以在插入地址表时使用它。
如果您确实使用自动递增主键,您将不得不查询
LAST_INSERT_ID()
在插入城市和州表之后获取id,并在插入地址表时使用它们。或者,如果您不想这样做,请在插入地址之前通过搜索城市名称或州名称来查询id。