Php 插入单列的值
在我的MySQL数据库中,我有两个表:Php 插入单列的值,php,mysql,mysqli,Php,Mysql,Mysqli,在我的MySQL数据库中,我有两个表:customers和feedbacks 值来自一个小型php应用程序 为了显示反馈记录属于哪个客户,我想将customers.customerID的值插入feedbacks.customerID 只有单个列(customer.customerID)进入(feedback.cutomerID)。 这是DDL @strawbery -- Table structure for table `customers` -- CREATE TABLE IF NOT E
customers
和feedbacks
值来自一个小型php应用程序
为了显示反馈记录属于哪个客户,我想将customers.customerID
的值插入feedbacks.customerID
只有单个列(customer.customerID)
进入(feedback.cutomerID)
。
这是DDL
@strawbery
-- Table structure for table `customers`
--
CREATE TABLE IF NOT EXISTS `customers` (
`customerID` int(20) NOT NULL AUTO_INCREMENT,
`compid` varchar(5) DEFAULT NULL,
`store` varchar(10) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL,
`contact` varchar(15) DEFAULT NULL,
`email` varchar(15) DEFAULT NULL,
`gender` varchar(7) DEFAULT NULL,
`age` int(3) DEFAULT NULL,
`fbdate` varchar(10) DEFAULT NULL,
`sysip` varchar(15) DEFAULT NULL,
PRIMARY KEY (`customerID`),
UNIQUE KEY `customerID` (`customerID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
CREATE TABLE IF NOT EXISTS `feedback` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`customerID` int(20) NOT NULL,
`design` varchar(10) NOT NULL,
`variety` varchar(10) NOT NULL,
`fabric` varchar(10) NOT NULL,
`stitch` varchar(10) NOT NULL,
`size` varchar(10) NOT NULL,
`service` varchar(10) NOT NULL,
`experience` varchar(10) NOT NULL,
`recommend` varchar(20) NOT NULL,
`comments` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_feedback` (`customerID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
注意插入
客户
中尚未在反馈
表中的ID
INSERT
INTO feedbacks ( customerID )
SELECT c.customerID
FROM customers c
WHERE c.customerID NOT IN (
SELECT f.customerID
FROM feedbacks
)
;
基本上,您需要首先创建客户——如果他们还不存在的话
INSERT INTO customers ( ... ) VALUES ( ... );
然后插入反馈
INSERT INTO feedback (customerID, ... ) VALUES (LAST_INSERT_ID(), ... );
但是,使用MySQL,如果数据库中已经存在客户,则可以在重复密钥更新时使用非标准的技巧:
INSERT INTO customers ( ... ) VALUES ( ... )
ON DUPLICATE KEY UPDATE customerID = LAST_INSERT_ID(customerID)
这将有效地将LAST\u INSERT\u ID()
的结果分配给指定的客户ID,如果客户已经存在,则根据(在页面底部)-如果客户不存在,您将获得新创建客户的自动递增主ID,正如您所期望的那样
然后您的INSERT-INTO-feedback
查询应该可以与LAST\u INSERT\u ID()配合使用
无论客户是创建的还是更新的-或者您可以在应用程序级别使用类似于PDO::lastinsertid的东西来执行此操作
我们可以看到两个表的正确DDL吗。感谢编辑@strawberry,我尝试了collapsar,,,但每次都会插入一个单独的记录,而不是反馈记录。我的意思是,首先执行insert查询以插入反馈,然后运行此查询以在新记录中插入customerID。我希望它被插入到同一个记录中。。。。如果数据库中已经有1000个客户和20000条反馈线?我觉得这不是一个“一次性”更新的工作。不,一个客户一次可以插入一个反馈。@AmjadZahid,所以你的评论并不清楚你在问什么。@blckbird,我给你一个运行我的反馈应用程序的标签。您可以输入姓名、联系人、电子邮件、年龄、性别和地址[此信息进入表客户]。然后你使用我的商店的设计、品种、面料等ui并提交。此信息将发送到反馈表。现在我想要的是在表customers中为您生成的customerID应该插入到feedbacks.customerID中,您对我的店铺的反馈将插入其中。清楚吗?:)