0

登録ページを作ろうとしています。キャンプに行く子供たちと、キャンプにお金を払っている親を関連付けようとしています。外部キーを確立しました。これらのクエリは phpAdmin で正常に実行されます。

新しい子供をデータベースに挿入する最初のクエリは正常に機能します。-追加したばかりの kidID を要求する 2 番目のクエリも、正しい値を返します。

ただし、2 番目のクエリの結果を必要とする 3 番目のクエリは機能しません。私はこの世界にかなり慣れていないので、提供できる助けがあれば大歓迎です。

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();

私の推測では、3 番目のクエリを実行する前に、PHP が 2 番目のクエリの結果を取得していることを確認する必要がありますが、それを設定する方法がわかりません。

4

1 に答える 1

0

INSERTには 2 つの形式があります。1 つはVALUES、定数を取ります。もう一つはSELECT. 2つは混ざりません。

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実際、 の形はまったく必要ありませんINSERT

于 2013-07-24T01:26:32.960 に答える