Der findes ikke en automatisk "update hvis findes ellers indsæt" - så du er nødt til på forhånd at vide eller finde ud af om der findes en post eller ej.
Der findes ikke en "update hvis findes ellers indsæt", men der findes en "slet hvis findes og indsæt". Den hedder REPLACE, men den kan normalt ikke anbefales.
Hvad er mest almindeligt?
1) INSERTs mest almindelig: Indsæt og check om du får en primary-key fejl. I så fald skal du lave en UPDATE i stedet for.
2) UPDATEs mest almindelig: Lav en update med primary-key i WHERE delen. Hvis den ikke ramte en række (affected-rows=0), så lav din INSERT.
Jah, REPLACE 1) er dyr: en sletning og insert, der ændrer på index-er etc. 2) vil ændre et evt. autoincrement-felt 3) er et par millioner lysår væk fra eksisterende standarder.
Jeg har lavet følgende kode: ----------------------------------------------------------------------------------- include("includes/conn.php"); $insertSQL = "update individuel_rang set userid='$infoid', type='type', nyrang='nyrang', glrang='glrang', spillernavn='spillernavn', turn='turn', nypoint='nypoint', glpoint='glpoint', niveau='niveau' where userid = $infoid && type = $type"; mysql_query($insertSQL) or die(mysql_error());
// tester om der er en række om der er en række der er opdateret, eller om der skal laves en ny. $test = mysql_affected_rows(); if($test == 0) {
Åh, ja, med mindre du laver en update, der ikke ændrer noget som helst i felterne. Så vil den ikke lave noget. Jeg har selv typiske et "sidst opdateret" felt, der i hvert fald ændrer sig - så den havde jeg ikke lige tænkt på.
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.