插入3张表的INTO

时间:2018-06-21 11:23:28

标签: php sql

 $sql3 = "INSERT INTO users_addresses (ua_user_id,ua_address_id) VALUES ('','')";

我是php的新手,我的提示是将2个表ID链接到另一个名为users_addresses的表中。当用户在我的数据库中注册后,我希望user_id和address_id克隆到users_addresses(ua_user_id,ua_address_id)

My tables

enter image description here

$sql = "INSERT INTO users (user_fname,user_mname,user_lname,user_login,user_email,user_phone) 
            VALUES ('{$_SESSION['userinfo']['fname']}', '{$_SESSION['userinfo']['mname']}', '{$_SESSION['userinfo']['lname']}', '{$_SESSION['userinfo']['login']}', '{$_SESSION['userinfo']['email']}', '{$_SESSION['userinfo']['phone']}')";
    $sql1 = "INSERT INTO addresses (address_line_1,address_line_2,address_zip,address_city,address_province,address_country) 
            VALUES ('{$_SESSION['addressinfo']['adr1']}', '{$_SESSION['addressinfo']['adr2']}', '{$_SESSION['addressinfo']['zip']}', '{$_SESSION['addressinfo']['city']}', '{$_SESSION['addressinfo']['provinciq']}', '{$_SESSION['addressinfo']['durjava']}')"; 
    $sql2 = "INSERT INTO notes (note_text) 
            VALUES ('{$_SESSION['noteinfo']['note']}')";

这些是我的其他SQL代码,用于在数据库中添加会话数据。

2 个答案:

答案 0 :(得分:1)

只需从第一个sql获取user_id。如果您正在使用mysqli函数,请执行此操作

// run your first sql: insert user
mysqli_query($con, $sql);
$user_id = mysqli_insert_id($con); // or mysqli::$insert_id 

接下来,您将获得带有用户ID的$ user_id变量。

$sql1 = "INSERT INTO addresses (address_line_1,address_line_2,address_zip,address_city,address_province,address_country) 
        VALUES ($'{$_SESSION['addressinfo']['adr1']}', '{$_SESSION['addressinfo']['adr2']}', '{$_SESSION['addressinfo']['zip']}', '{$_SESSION['addressinfo']['city']}', '{$_SESSION['addressinfo']['provinciq']}', '{$_SESSION['addressinfo']['durjava']}')"; 
mysqli_query($con, $sql);
$address_id = mysqli_insert_id($con); // or mysqli::$insert_id 

$sql3 = "INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES ($user_id, $address_id)";
mysqli_query($con, $sql);

答案 1 :(得分:0)

使用mysqli_insert_id()获取插入表的唯一ID,此示例使用过程样式:

<?php
include 'connection.php';
......
$InsertSQL =    "INSERT INTO users (user_fname,user_mname,user_lname,user_login,user_email,user_phone) 
                VALUES ('{$_SESSION['userinfo']['fname']}',
                        '{$_SESSION['userinfo']['mname']}',
                        '{$_SESSION['userinfo']['lname']}',
                        '{$_SESSION['userinfo']['login']}',
                        '{$_SESSION['userinfo']['email']}',
                        '{$_SESSION['userinfo']['phone']}')";
$ResultSQL = mysqli_query($conn, $InsertSQL) or die(mysqli_error($conn)); // <-- execute your query
$UserID = mysqli_insert_id($conn); // <-- get the UserID

$InsertSQL =    "INSERT INTO addresses (address_line_1,address_line_2,address_zip,address_city,address_province,address_country) 
                VALUES ('{$_SESSION['addressinfo']['adr1']}',
                        '{$_SESSION['addressinfo']['adr2']}',
                        '{$_SESSION['addressinfo']['zip']}',
                        '{$_SESSION['addressinfo']['city']}',
                        '{$_SESSION['addressinfo']['provinciq']}',
                        '{$_SESSION['addressinfo']['durjava']}')"; 
$ResultSQL = mysqli_query($conn, $InsertSQL) or die(mysqli_error($conn)); // <-- execute your query
$AddressID = mysqli_insert_id($conn); // <-- get the AddressID

$InsertSQL =    "INSERT INTO user_addresses (ua_user_id,ua_address_id) 
                VALUES ($UserID,$AddressID)"; // <-- INSERT INTO user_address
$ResultSQL = mysqli_query($conn, $InsertSQL) or die(mysqli_error($conn)); // <-- execute your query
?>

您还应该研究SQL注入漏洞,请查看prepared statements

希望有帮助。