11. oktober 2004 - 09:17Der er
14 kommentarer og 1 løsning
Smart måde at indsætte i database, hvis den ikke allerede er der.
Hej, jeg er ved at lave en side med noget XML-feed. Og i den xml har jeg nogle værdier, hvis de ikke findes i databasen, skal de indsættes. Hvordan laver jeg dette lettest?
XML indholder oftest omkring 20-30 items.
Så er det lettest at lave SELECT item FROM database WHERE navn = $navn; if ($fundet) INSERT INTO blabla...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
det er indbygget i mysql (og næsten alle andre SQL varianter)
INSERT INTO tabelnavn IGNORE blabla ...
fra: http://dev.mysql.com/doc/mysql/en/INSERT.html "If you specify the IGNORE keyword in an INSERT with many rows, any rows that duplicate an existing UNIQUE index or PRIMARY KEY value in the table are ignored and are not inserted. If you do not specify IGNORE, the insert is aborted if there is any row that duplicates an existing key value. You can determine with the mysql_info() C API function how many rows were inserted into the table."
du skal dog huske at erklære de felter der ikke må være dubletter af som UNIQUE idet du opretter tabellen.
hvor vil du have dem?, hvornår vil du have dem?, i hvilken form vil du have dem? hvorfor vil du have dem? (er du jakobdo's lillebror der har lånt hans brugernavn?)
Hvad mener du med: (er du jakobdo's lillebror der har lånt hans brugernavn?) Jeg skulle gerne være mig selv, og ingen anden!
Jeg har en database, hvor nogle items vil være... Så feeder jeg den med nye items, nogle er der måske allerede, andre er ikke... Jeg vil så have en liste, hvor dem som allerede var i databasen, markeres sådan, dem som er nye markeres sådan!
Og hvad jeg sådan nærmere skal bruge det til, må jeg ikke sige, så bliver jeg nød til at slå jer ihjel! :o)
OK, jeg troede du snakkede om at få fat i dem der IKKE blev indsat.
Hvis du har et id-felt der autoincrementerer for hver insert kan du bruge funktionen mysql_insert_id() http://dk.php.net/manual/en/function.mysql-insert-id.php i situationen hvor du lige har insertet flere rækker vil den give dig id nummeret på den første af dem, så: $sql_kommando = " SELECT * FROM tabelNavn WHERE id >= " .mysql_insert_id();
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.