Php 如何在单个查询中向多个表插入数据-Mysql

Php 如何在单个查询中向多个表插入数据-Mysql,php,mysql,mysqli-multi-query,Php,Mysql,Mysqli Multi Query,我有8个查询要插入到8个表中。我试过这个,但没有用 $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 databas

我有8个查询要插入到8个表中。我试过这个,但没有用

$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";
 }
$mysql\u db\u hostname=“localhost”;
$mysql\u db\u user=“root”;
$mysql_db_password=“”;
$mysql\u db\u database=“emp”;
$con=mysqli\u connect($mysql\u db\u主机名,$mysql\u db\u用户,$mysql\u db\u密码)或die(“无法连接数据库”);
mysqli_select_db($con$mysql_db_database)或die(“无法选择数据库”);
如果(mysqli_multi_query($con),插入到t_emp(`e_id`,`,`,`,`)值(''','');插入到t_emp添加(`e_id`,`,`,`,`,`)值(','');插入到t_emp dep(`e_id`,`,`,`,`,`,`,`,`,`)值(','','',',''),等等)
{
回声“插入”;
}
否则{
回显“未插入”;
}

是否有任何方法可以存储到多个表中?

使用
事务

BEGIN;
INSERT INTO tab1 (col1, col2)
  VALUES('1', '2');
INSERT INTO tab2 (col1, col2,col3) 
  VALUES(1,2,3);
COMMIT;
MySQL不支持在一次插入中插入多个表 声明


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


如果您愿意,您可以使用MySQL和/或用于此目的。

由于问题已在其他帖子中结束,我将在这里提出此问题-创建存储过程:-

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 ;
在您的gui中运行该功能,如:-

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

您可以使用插入触发器后的
在多个表中插入记录。当在该数据库中执行insert语句时,它将自动触发。

有错误消息吗?您的实际查询是什么?多查询不是这样工作的。RTM或这个你也有一个语法错误在这里回声“未插入”,你需要使用正确的错误处理你可以使用触发器我上面的评论语法错误应该已经和/或包含我是新的php和mysql。你能详细说明我如何使用这段代码吗?我在哪里插入连接字符串,以及如何实现成功插入和失败的if条件。没有任何迹象表明这是事务性的,特别是对于一个说她是php和mysql新手的OP来说。“这是个坏主意吗,不是。”Machavity OP现在发布了同样的问题,有人建议她使用这个问题。根据Stack的看法,这是一个repost/replicate。我认为这个答案没有问题$sql='call
spInsertTemp
(1,2,4,5);这些1,2,3,4,5..是什么?我的朋友,它们是代表StoredProcess各种参数的示例参数值。sp有4个参数,因此有4个values@RamRaider我想你和这件事有很长的关系。我这样说并不是在侮辱这个人,但很明显,她还没有掌握SQL的概念。在她的另一个问题中,她提到了一个表格“@RiggsFolly first time意味着当我第一次提交表格(第一条记录)-angel”并且没有代码支持这个问题,她也没有检查它失败的原因<代码>回显“未插入”没有告诉她查询失败的真正原因。我怀疑她的问题是否会得到解决。我真诚地祝愿她一切顺利。@Fred ii-你很可能是对的~我意识到太晚了,唉!让我和你一起祝福她well@RamRaider我知道我是对的;我骨子里感觉到了;-)但我会为你的麻烦投赞成票,这是使用过程的一个很好的例子。干杯