我有以下数据:
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;
现在,我需要首先在城市表和州表中插入城市和州,如果它们不存在的话。如果它们存在,我需要获得与它们对应的主键:
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;
之后,我需要获得相应的主键,并需要放入第一个表。我怎样才能一气呵成?
答案 0 :(得分:1)
您的城市和州表似乎没有AUTO_INCREMENT主键。您必须在插入这些表时指定值。
如果是这样,那么您的应用程序代码具有刚刚插入的值,您可以在插入地址表时使用它。
如果你确实使用了AUTO_INCREMENT主键,那么在插入到城市和州表后,你必须查询LAST_INSERT_ID()
以获取id,并在插入地址表时使用这些。或者,如果您不想这样做,请在插入地址之前通过搜索城市名称或州名来查询ID。