Php 插入单列的值

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

在我的MySQL数据库中,我有两个表:
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中,您对我的店铺的反馈将插入其中。清楚吗?:)