在PHP的第二个查询中使用来自一个mysqli查询的值

问题描述:

我试图构建一个注册页面。我试图将要去营地的小孩和正在为营地付费的父母联系起来。我建立了一个外键,并且这些查询在phpAdmin中运行良好。在PHP的第二个查询中使用来自一个mysqli查询的值

插入新的孩子到数据库的第一个查询工作正常。 - 第二个询问刚刚添加的kidID的查询也会返回正确的值。

但是我的第三个查询,这需要第二个查询的结果不起作用。我对这个世界很新,并且非常感谢可以提供的帮助。

require_once 'login.php'; 
//sending data to server. 
$MySQL = new mysqli($db_hostName, $db_username, $db_password, $db_databaseName); 



$MySQL->query("INSERT INTO `Kid`(`First_Name`, `Last_Name`, `Parent1_First_Name`, `Parent1_Last_Name`, `Parent2_First_Name`, `P2_Last_Name`, `P1_Phone`, `P2_Phone`, `P1_Email`, `P2_Email`, `EmergencyContact_FName`, `EmergencyContact_LName`, `EmergencyContact_Phone`, `KidStreetAddress`, `KidZip`, `SpecialNeeds`, `DOB`, `PickupID`, `kidSex`, `SwimID`) 
     VALUES ('$kidFirstName','$kidLastName','$p1FirstName','$p1LastName','$p2FirstName','$p2LastName','$p1FinPhone','$p2FinPhone','$p1Email','$p2Email','$eFirstName','$eLastName','$eFinPhone','$kidStreetAddress',$kidZip,'$kidSpecialNeeds','$cDOB','$kidPickup','$kidSex',(SELECT `SwimID` FROM `SwimmingStrength` WHERE `SwimID` = 1))"); 

$kidID = $MySQL->query("SELECT `KidID` FROM `Kid` ORDER BY `KidID` DESC LIMIT 1"); 
$kidID->data_seek($i); 
$row = $kidID->fetch_row(); 
$kidFinID = $row[0]; 

$MySQL->query("INSERT INTO `Customer`(`First_Name`, `Last_Name`, `Billing_Address`, `Billing_Zip`, `Billing_State`, `Billing_Phone`, `Billing_Email`, `KidID`) 
VALUES ('$BillFirstName','$BillLastName','$BillFullAddress',$BillZip,'$BillState','$billFinPhone','$BillEmail',(SELECT `KidID` FROM `Kid` WHERE `KidID`=$kidFinID)"); 

$kidID->close(); 
$MySQL->close(); 

我的猜测是不知何故,我需要在运行第三之前,为了确保PHP是抓住了第二次查询的结果,但不知道如何设置了。

INSERT有两种形式。一个是VALUES并采用常量。另一个是SELECT。两者不混合。

你想INSERT . . . SELECT而已,像这样使用:

INSERT INTO `Customer`(`First_Name`, `Last_Name`, `Billing_Address`, `Billing_Zip`, 
         `Billing_State`, `Billing_Phone`, `Billing_Email`, `KidID`) 
    select '$BillFirstName', '$BillLastName', '$BillFullAddress', $BillZip, '$BillState', 
      '$billFinPhone', '$BillEmail', `KidID` 
    from Kid 
    where `KidID` = $kidFinID; 

换句话说,你可以把常量在SELECT列表行。事实上,你根本不需要的VALUES表格。

+0

这样做。感谢您的信息。我的编码非常感谢。 – Stephen