Avatar billede mini97ad Nybegynder
22. maj 2003 - 14:51 Der er 7 kommentarer og
1 løsning

Problemer med at løse en sql sætning

hej

eks:

2 tabeller

1. tabel indholder (felt1, felt2)
2. tabel indholder (felt1, felt2, felt3, felt4)

felt 1 er et unikt autogenereret nøgletal i tabel1,
mens felt 1 i tabel2 er indsat og ikke unikt i den tabel. (Den kloge læser kan her regne ud at målet er en en-til-mange relation).

Jeg ønsker at indsætte en række i begge tabeller. Problemet er at indsætte felt1 i tabel2, da felt1 først generes, når felt 2 er indsat i tabel1.
Hvordan indsætter jeg smartest i en SQL sætning (eller 2?) data i begge tabbeller, således at felt1 i tabel2 findes ved at finde den felt1 værdi i tabel1, der har værdien felt2.

Puhaa gav det mening ;-)
Avatar billede sostack Nybegynder
22. maj 2003 - 14:54 #1
Avatar billede bearhugx Nybegynder
22. maj 2003 - 14:56 #2
Først så sætter du data ind i tabel1 (du skal have den autogenrede id), derefter bruger du mysql_insert_id() til at få IDen for indsættelsen i tabel1 - og derefter kan du lave query'en, som skal sætte data ind i tabel2
Avatar billede mini97ad Nybegynder
22. maj 2003 - 14:58 #3
ok, så jeg nå jeg skriver den 2. sql sætning erstatter jeg undervalues "ID" med mysql_insert_id()?
Avatar billede mini97ad Nybegynder
22. maj 2003 - 15:17 #4
hmm den indsætter bare værdien 0 i tabel 2 - kan i se hvad der går galt?

$strSQL =
        "INSERT INTO tabel1
        (id,
        XX)

        VALUES
        (NULL,
        '$XX')";
       
       
        $resultat = mysql_query ($strSQL);
   
        if(!$resultat) {
            echo "<p>Der kunne ikke forbindes til databasen<br>".
                      "Fejl: " . mysql_error() . "</p>";
        }


        else {
        $strSQL2 =
        "INSERT INTO tabel2
        (res_id,
        XXX,
        XXXX,
        XXXXX,
        XXXXXX)
       
        VALUES
        ('mysql_insert_id()',
        '$XXX',
        '$XXXX',
        '$XXXXX',
        '$XXXXXX')";
       
        $resultat2 = mysql_query ($strSQL2);
Avatar billede detox Nybegynder
22. maj 2003 - 15:35 #5
Da felt 1 i tabel 1 er autogeneret skal du vel ikke indsætte noget der, så måske: $strSQL =
        "INSERT INTO tabel1
        (XX) VALUES ('$XX')";
Avatar billede mini97ad Nybegynder
22. maj 2003 - 15:36 #6
har prøvet det også :) men det hjalp ikke..
Avatar billede psychodad Nybegynder
22. maj 2003 - 15:50 #7
mysql_insert_id() skal køres fra php. Dvs du skal have 2 særskildte queries for at bruge det. Jeg ved ikke om det kan løses i et enkelt sql kald.

Hvor er din database link identierfyer btw henne?

men ellers skal det være ca:


$strSQL = "INSERT INTO tabel1 (id, XX) VALUES ('','$XX')";
$resultat = mysql_query ($strSQL, $db_link);

$insert_id=mysql_insert_id($db_link);

$strSQL2 = "INSERT INTO tabel2
        (res_id,
        XXX,
        XXXX,
        XXXXX,
        XXXXXX)
       
        VALUES
        ('$insert_id',
        '$XXX',
        '$XXXX',
        '$XXXXX',
        '$XXXXXX')";
       
$resultat2 = mysql_query ($strSQL2, $db_link);
Avatar billede mini97ad Nybegynder
22. maj 2003 - 16:01 #8
Super lækkert, så virker det tak psyko.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester