2013-07-24 58 views
0

我試圖構建一個註冊頁面。我試圖將要去營地的小孩和正在爲營地付費的父母聯繫起來。我建立了一個外鍵,並且這些查詢在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是抓住了第二次查詢的結果,但不知道如何設置了。

回答

1

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

相關問題