在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
表格。
这样做。感谢您的信息。我的编码非常感谢。 – Stephen