2015-11-03 117 views
3

我有8个查询要插入到8个表中。我试图与这可是没有用如何在单个查询中将数据插入到多个表中 - Mysql

$mysql_db_hostname = "localhost"; 
$mysql_db_user = "root"; 
$mysql_db_password = ""; 
$mysql_db_database = "emp"; 

$con = mysqli_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password) or die("Could not connect database"); 
mysqli_select_db($con, $mysql_db_database) or die("<div class='loginmsg'>Could not select database</div>"); 

if(mysqli_multi_query($con,"INSERT INTO t_emp (`e_id`,``,``) VALUES ('','',''); INSERT INTO t_emp_add (`e_id`,``,``) VALUES ('','',''); INSERT INTO t_emp_att (`e_id`,``,``) VALUES ('','',''); INSERT INTO t_emp_dep (`e_id`,``,``) VALUES ('','','');.....(etc);")) 
{ 
echo "Inserted"; 
} 
else{ 
echo "Not Inserted"; 
} 

是否有任何存储到多个表的方法..?

+0

任何错误信息?什么是您的实际查询? – chris85

+0

这不是多重查询的工作原理。 RTM http://php.net/manual/en/mysqli.multi-query.php或者这个http://www.w3schools.com/php/php_mysql_insert_multiple.asp –

+0

你在这里也有一个语法错误echo“Not Inserted”你需要使用适当的错误处理http://php.net/manual/en/mysqli.error.php –

回答

1

使用transactions

BEGIN; 
INSERT INTO tab1 (col1, col2) 
    VALUES('1', '2'); 
INSERT INTO tab2 (col1, col2,col3) 
    VALUES(1,2,3); 
COMMIT; 

MySQL不支持在单个INSERT语句 多表插入。

+0

我是新来的PHP和MySQL。请你详细说明我该如何使用这段代码意味着我在哪里插入连接字符串以及如何实现,如果条件成功插入和失败 – angel

+0

没有什么可以表明这是事务性的,特别是对于说她是PHP新手的OP和MySQL。这是一个坏主意,不。 – Drew

0

不,MySQL没有表达式用于在多个表中插入一个查询。

如果你愿意,你可以使用MySQL stored procedures or functions和/或使用transactions

+0

@Machavity OP现在发布了同样的问题http://stackoverflow.com/q/33583542/,并建议她使用它。这是根据Stack如何看待它的重新发布/重复。 –

+0

我看到这个答案没有问题 – Drew

1

由于这个问题是在其他发布关闭,我会在这里把这个 - 创建一个存储过程: -

delimiter $$ 
CREATE PROCEDURE `spInsertTemp`(IN `p_emp_no` INT, IN `p_e_id` INT, IN `p_att_s_no` INT, IN `p_dep_s_no` INT) 
    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT '' 
begin 
    insert into `t_emp` (`emp_s_no`,`e_id`) values (p_emp_no, p_e_id); 
    insert into `t_emp_add` (`e_id`) values (p_e_id); 
    insert into `t_emp_att` (`att_s_no`,`e_id`) values (p_att_s_no, p_e_id); 
    insert into `t_emp_dep` (`dep_s_no`, `e_id`) values (p_dep_s_no, p_e_id); 
end $$; 
delimiter ; 

运行在你的图形用户界面,使用像: -

$sql='call `spInsertTemp`(1,2,4,5);'; 
+0

$ sql ='call'spInsertTemp'(1,2,4,5);'; 这些1,2,3,4,5 ..是什么? – angel

+0

他们我的朋友是表示存储过程的各种参数的示例参数值。 sp有4个参数,因此有4个值 – RamRaider

+0

@RamRaider我认为你在这方面有很长的路要走。我并没有侮辱这个人,但很明显她没有理解SQL的概念。在她的另一个问题http://stackoverflow.com/q/33583542/中,她提到了一个表单*“@ RiggsFolly第一次意味着我第一次提交表单时(第一条记录) - 天使”*,并且没有代码支持这个问题,她也没有检查它为什么失败。 '回声“不插入”;'没有告诉她真正的原因,为什么她的查询失败。我怀疑她的问题将永远解决。我衷心祝愿她好。 –

0

您可以使用After Insert Trigger将记录插入多个表中。当插入语句在该数据库中执行时它将自动触发。

相关问题