06. oktober 2004 - 14:09Der er
10 kommentarer og 1 løsning
To skrivninger i én kommando?
Hej, alle I kloge hoveder :)
Forestil jer, at jeg via en formular får samlet en flok oplysninger, som skal sendes ind i databasen. Er det muligt at sende nogle af disse oplysninger ind i én tabel og andre af dem ind i en anden - med én query?
Tanken i mit hovede er med andre ord noget i retning af:
(fordansket version af den query, jeg gerne vil køre) "INDSÆT (bla1, bla2, bla3) VÆRDIERNE ('$bla1','$bla2', '$bla3') I tabel1 OG INDSÆT (bla4, bla5) I tabel2 VÆRDIERNE ('$bla4', '$bla5')";
Jeg kan tilføje, at den formular, hvori oplysningerne skrives benytter METHOD=POST og ACTION=fil-der-skriver-til-databasen.php. Selve queryen skal altså ligge i det dokument, der aktiveres fra formularen...
Kort version: Kan ovenstående lade sig gøre i én query, eller skal der to til? - Stadig i samme dokument. Hvis der skal to til for at udføre arbejdet, hvordan griber jeg så det an?
du kan formentlig slippe afsted med at sende to inserts afsted til databasen adskilt af et semikolon.
det er bare en rigtig dårlig ide at sende queryen som felt fra formen og direkte til databasen, da det tillader at sende hvilken-somhelst query streng til din database, og få den udført...
Nogle sprog/API'er tillader flere SQL sætninger med et kald.
Jeg ved ikke om PHP mysql_ gør (din sætning ligner PHP).
Men hvorfor ?
Jeg tror ikke på nogen nævneværdig performance forskel.
Og hvis vi snakker data integritet, så bør du skifte fra MyISAM til InnoDB tabeller og udføre de 2 INSERT i en enkelt transaktion (og det kan man sagtens i 2 kald).
Og fs har naturligvis helt ret i at du skal gøre noget for at undgå SQL injection.
I andre sprog kan man bruge parameters (kaldet prepared statement i Java).
I PHP mener jeg at man plejer at bruge noget strip/add slashes/quotes halløjsa.
Det prøver jeg i aften, når tiden er der til det :) - Indtil videre tak. Jeg vender tilbage og jamrer, hvis det ikke virker ;) Virker det, får du point på en studs.
Queryen bliver ikke sendt som felt fra formularen som sådan - bare rolig. Formularens action er et selvstændigt php-dokument, hvori al kommunikation med db'en foregår. Princippet er jo dybest set identisk med fx. at hente en menu-fil ind i et andet for at generere navigation eller lignende.
Ovenstående kommentar var naturligvis til fsconsult.dk - den smuttede i farten.
Der er iøvrigt tale om php, ja ;)
arne_v: Skifte fra MyISAM til InnoDB..? Hvad er forskellen, og vil det evt. betyde, at jeg kan køre begge "skrivninger" i én sql-query?
Du nævner, at jeg skal udføre de to INSERT i en enkelt transaktion... Lad mig lige være tumpet her og se, om jeg forstår dig ret: Du siger, at min oprindelige tanke i så fald er mulig, eller? :) - Eller er det under alle omstændigheder smartere at lave to "selvstændige" INSERTs/kald, stadig i samme dokument (fil-der-skriver-til-databasen.php)?
arne_v: Ok, på dén måde :D Herligt, man kan få tingene ind med ske. Tak for det - kigger som sagt på det i aften, når tiden er der til det, og så vender jeg tilbage og smider med point, hvis det virker ;)
Æhm....stryg den sidste kommentar :D - Point uddelt. Hehe.
Synes godt om
Ny brugerNybegynder
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.