如何修复将数据插入第二张表

时间:2019-01-15 08:36:45

标签: php mysql insert

我正在尝试根据创建的UserID(自动递增)的第一个表将相同的数据插入第二个表。

我创建了一个INSERT查询,该查询将用户注册数据插入到users_tb表中。它可以成功工作。然后,我需要基于address_tb中的UserID将描述数据的地址插入users_tb表中。但不幸的是,它不起作用。

//Rady to insert:
$results = $Street. ", " .$Apt. ", " .$City. ", " .$State. ", " .$ZipCode. ", " .$Country; 
$query = mysql_query("INSERT INTO users_tb (UserId , FirstName , LastName , Email , Username , Password , Street , Apt , City , State , ZipCode , Country , Address , HomePhone , MobilePhone , Lat, Lng, Membership) VALUES ('' , '$First_Name' , '$Last_Name' , '$Email' , '$Username' , '$hashedPW' , '$Street' , '$Apt' , '$City' , '$State' ,'$ZipCode' ,'$Country' , '$results' , '$Ph_Number' , '$Mb_Number' , '0' , '0' , '1')");

// Insert Data into address_tb
$ad = mysql_query("SELECT UserID , Username FROM users_tb WHERE Username = $Username");
$adad = mysql_fetch_row($ad);
$UserID = mysql_real_escape_string($adad['UserID']);
$query = mysql_query("INSERT INTO address_tb (AddressID , Street , Apt , City , State , ZipCode , Country , Address , Lat , Lng , UserID) VALUES ('' , '$Street' , '$Apt' , '$City' , '$State' ,'$ZipCode' ,'$Country' , '$results' , '0' , '0' , '$UserID')");

我还需要在address_tb表中分别包含UserID的地址字段。

3 个答案:

答案 0 :(得分:0)

Flowables应该是单引号,因为它是字符串。

$Username

第二个问题是,$ad = mysql_query("SELECT UserID , Username FROM users_tb WHERE Username = '$Username'"); 返回枚举数组即键作为数字索引。更改为[mysql_fetch_row][1]

mysql_fetch_assoc

另一种方法是获取最后一个插入ID并使用它添加地址。 插入用户表后,使用以下方法检索上一个用户ID

$adad = mysql_fetch_assoc($ad);

直接将$last_user_id = mysql_insert_id(); 用于$last_user_id上的插入查询。

  

请注意,address_tb已过时。您应该对参数化查询(https://www.w3schools.com/php/php_mysql_prepared_statements.asp)使用mysql

答案 1 :(得分:0)

这可以使用INSERT SELECT在1个查询中完成:

INSERT INTO address_tb (AddressID,
                        Street,
                        Apt,
                        City,
                        State,
                        ZipCode,
                        Country,
                        Address,
                        Lat,
                        Lng,
                        UserID)
SELECT (AddressID,
        Street,
        Apt,
        City,
        State,
        ZipCode,
        Country,
        Address,
        Lat,
        Lng,
        UserID)
FROM users_tb
WHERE users_tb.Username = ?;

答案 2 :(得分:0)

我做到了。谢谢大家说实话,我不明白第二个INSERT查询没有完成address_tb中数据的原因是什么。我只接受了第一个查询,并将其编辑为第二个查询,它开始工作。如我所见,我的新查询没有任何区别,这是我编辑第一个查询得到的。这是我的第二个查询:

<< $ sql2 = mysql_query(“ INSERT INTO address_tb(AddressID,Street,Apt,City,State,ZipCode,Country,Address,Lat,Lng,UserId)VALUES('','$ Street','$ Apt ','$ City','$ State','$ ZipCode','$ Country','$ results','0','0','$ UserID')“); >>