如何将数据插入两个MySQL表

时间:2016-08-18 23:31:58

标签: php mysql

如何一次将数据插入两个MySQL表中。

$username = $_POST['username'];
$user_pass = $_POST['password'];
$user_type = $_POST['tpye'];
$user_street = $_POST['street'];
$user_city = $_POST['city'];
$user_country = $_POST['country'];
$user_email = $_POST['email'];
$user_phone = $_POST['phone'];

$query = "INSERT INTO  fkrv_users 
                    (fkrv_username, fkrv_user_pass, fkrv_user_type, 
                    fkrv_user_street, fkrv_user_city, fkrv_user_cuntry, 
                    fkrv_user_email, fkrv_user_phone) 
           VALUES ('$username','$user_pass','$user_type,',
                   '$user_street','$user_city','$user_country',
                   '$user_email','$user_phone')";

$result = mysqli_query($link,$query);

我需要将$ username和$ user_type插入到表fkrv_list ..

我尝试了两个MySQL查询但是没有用。这是我试过的..

$username = $_POST['username'];
$user_pass = $_POST['password'];
$user_type = $_POST['tpye'];
$user_street = $_POST['street'];
$user_city = $_POST['city'];
$user_country = $_POST['country'];
$user_email = $_POST['email'];
$user_phone = $_POST['phone'];

$query1 = "INSERT INTO  fkrv_users 
                   (fkrv_username, fkrv_user_pass, fkrv_user_type, 
                    fkrv_user_street, fkrv_user_city, fkrv_user_cuntry, 
                    fkrv_user_email, fkrv_user_phone) 
            VALUES ('$username','$user_pass','$user_type,',
                    '$user_street','$user_city','$user_country',
                    '$user_email','$user_phone')";

$query2 "INSERT INTO  fkrv_list 
                    (fkrv_list_username, fkrv_list_type) 
             VALUES ('$username','$user_type')

$result = mysqli_query($link,$query1,$query2);

我还绑定了一个查询并使用“AND INSERT INTO”,但没有成功..

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

你可以像这样单独运行每一个:

$query1 = "INSERT INTO  fkrv_users (fkrv_username, fkrv_user_pass, fkrv_user_type, fkrv_user_street, fkrv_user_city, fkrv_user_cuntry, fkrv_user_email, fkrv_user_phone) VALUES ('$username','$user_pass','$user_type,','$user_street','$user_city','$user_country','$user_email','$user_phone')";

$query2 "INSERT INTO  fkrv_list (fkrv_list_username, fkrv_list_type) VALUES ('$username','$user_type')";

$result1 = mysqli_query($link,$query1);
$result2 = mysqli_query($link,$query2);

答案 1 :(得分:0)

正如其他人所说,你必须插入2次。

但是,您也可以通过几种更好的方式处理此问题。

选项1:创建触发器

delimiter #

create trigger to_list_from_users_ins_trig after insert on fkrv_users
for each row
begin
  insert into fkrv_list (fkrv_list_username, fkrv_list_type) values     (new.fkrv_username, new.fkrv_user_type);
end#

选项2:仔细检查您的逻辑

这实际上应该是选项1,但是......

确保您的SQL / Table架构/ PHP代码尽可能高效,并且可以放在一起。逻辑上哪些部分组合在一起。什么在逻辑上适合特定的域或类别?

如果您需要为每个用户提供此字段,则应该将其放在users表中。

列表的目的是什么?你用什么数据?

第三:谨慎。

您的代码目前直接将变量输入表格。

您应该进行某种形式的验证和清理,以防止SQL注入用户表单等内容。

高度建议您在将任何用户输入插入数据库之前将其转义。如果不这样做会让你非常容易受到攻击,并且不会让那些不太好的人对你的数据感兴趣。

为此,您可以简单地执行以下操作:

$username = mysqli_real_escape_string($link, $_POST['username']);
对于进入查询的每个其他变量,

等。

您可以阅读PHP.net manual page