0

こんにちは、mysql について質問があります

これは私のクエリです:

$geboortedatum = $_POST['dag'].'-'.$_POST['maand'].'-'.$_POST['jaar'];
$geboortedatum1 = $_POST['dag1'].'-'.$_POST['maand1'].'-'.$_POST['jaar1'];
try{                                                                    
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);                                                                   

    $sql = "
        INSERT INTO clienten 
        (client_voornaam,
        client_achternaam,
        client_geboortedatum,
        client_geslacht,
        client_adres,
        client_postcode,
        client_woonplaats,
        client_contactpersoon,
        client_diagnose,
        datun_aanmaak)
        VALUES (:voornaam,
        :achternaam.
        :geboortedatum,
        :geslacht,
        :adres,
        :postcode,
        :woonplaats,
        :contactpersoon,
        :diagnose,
        :datumaanmaak)
        INSERT INTO verzorgers(
        wat_is_verzorger,
        voornaam_verzorger,
        achternaam_verzorger,
        geboortedatum_verzorger,
        email_verzorger,
        geslacht_verzorger,
        adres_verzorger,
        postcode_verzorger,
        woontplaats_verzorger,
        tel1_verzorger,
        tel2_verzorger,
        datum_aanmaak
        )
        VALUES(
        :watisverz
        :voornaamverz,
        :achternaamverz,
        :geboortedatumverz,
        :emailverz,
        :geslachtverz:
        :adresverz,
        :postcodeverz,
        :woonplaatsverz,
        :tel1verz,
        :tel2verz,
        :datumaanmaak
        )
        ";                                                              

    $stmt = $db->prepare($sql);                                         

    $stmt->bindParam(':voornaam', $_POST['voornaam'], PDO::PARAM_STR);                  
    $stmt->bindParam(':achternaam', $_POST['achternaam'], PDO::PARAM_STR);                  
    $stmt->bindParam(':geboortedatum', $geboortedatum, PDO::PARAM_INT); 
    $stmt->bindParam(':geslacht', $_POST['geslacht'], PDO::PARAM_STR);                  
    $stmt->bindParam(':adres', $_POST['adres'], PDO::PARAM_STR);                    
    $stmt->bindParam(':postcode', $_POST['postcode'], PDO::PARAM_INT);  
    $stmt->bindParam(':woonplaats', $_POST['woonplaats'], PDO::PARAM_STR);                  
    $stmt->bindParam(':contactpersoon', $_POST['contactpersoon'], PDO::PARAM_STR);                  
    $stmt->bindParam(':diagnose', $_POST['diagnose'], PDO::PARAM_INT);  
    $stmt->bindParam(':datumaanmaak', $_POST['datum_toetreding'], PDO::PARAM_INT);                                                                      

        $stmt->execute();                                               

}                                                                       
catch(PDOException $e)                                                  
{                                                                       
    echo '<pre>';                                                       
    echo 'Regel: '.$e->getLine().'<br>';                                
    echo 'Bestand: '.$e->getFile().'<br>';                              
    echo 'Foutmelding: '.$e->getMessage();                              
    echo '</pre>';                                                      
}   ?>

クライアントと verzorger が作成されると、両方とも一意の ID を取得します。クライアントには、関連付けられた verzorger ID を格納する列があり、その逆もありました。作成した ID を直接格納するクエリを作成することはできますか?

編集: 難しいかもしれませんが、verzorger でクライアント ID のみを取得するための答えかもしれません?:)

4

2 に答える 2

1

このようなものはどうですか (TableAID と TableBID はどちらも AUTO_INCREMENT 列です):

INSERT INTO TableA
(SomeColumn)
VALUES
('Blah');

SET @TableAID = LAST_INSERT_ID();

INSERT INTO TableB
(TableAID, AnotherColumn)
VALUES
(@TableAID,'Foobar');

SET @TableBID = LAST_INSERT_ID();

UPDATE TableA
SET TableBID = @TableBID
WHERE TableAID = @TableAID;
于 2012-12-21T15:55:08.220 に答える
-1

できることは、シーケンス ジェネレーターに対してクエリを実行する関数を作成することです。

create function foo  returns int
Begin 
   Declare nextValue int
   Set nextValue = SELECT NEXT VALUE FOR mySequence;
End
return (nextValue);

これにより、このシーケンスから返された値を渡すことができ、値がどうなるかを「前もって」知ることができます。

編集

同時実行がどのように機能するかを理解し、悲観的ロックまたは楽観的ロックのいずれかを使用してください。これは明らかなはずですが、含める必要があると感じる人もいます。

于 2012-12-20T21:04:42.100 に答える