Jeg skal ændre min database, men spørgsmålet er om jeg skal insert eller update. Dette kommer naturligvis an på om der findes ligende poster. Jeg roder lige med følgende:
@sql_2 = mysql_query("UPDATE tabel SET tlf = '$a' WHERE id = '$i'");
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.
Først kan du jo udvælge med en SELECT for at se, om det er en id='$i' - men du kan også bruge REPLACE INTO, som netop indsætter, hvis rækken ikke findes og hvis den findes opdaterer i stedet:
mysql_query("REPLACE INTO tabel SET tlf = '$a' WHERE id = '$i'");
Men så vil alle eventuelle øvrige attributter blive sat til ingenting i samme ombæring - hvis der altså er flere attributter.
$sql = "UPDATE tabel SET tlf = '$a' WHERE id = '$i'"; if(false == mysql_query($sql)) { mysql_query("INSERT INTO tabel (tlf) VALUES ('". $a ."')") or die (mysql_error()); }
mysql_query vil altid returnere true for en UPDATE hvis der ikke er en SQL-fejl i sætningen - uanset om der opdateres nogle rækker eller ej.
Alternativt kunne man bruge mysql_affected_rows(), men hvad nu hvis rækken findes men bare allerede har det telefonnummer, som man opdaterer til.
if (mysql_result(mysql_query("SELECT COUNT(1) FROM tabel WHERE id = '$i'"), 0) == 0) { // indsæt ny: mysql_query("INSERT INTO tabel SET tlf = '$a'"); } else { // opdater eksisterende mysql_query("UPDATE tabel SET tlf = '$a' WHERE id = '$i'"); }
coderdk, hvad nu hvis rækken findes men har det rigtige telefonnummer allerede? Så vil affected rows være 0, men vi ønsker jo ikke en ny række indsat af denne årsag?
coderdk, jeg tror det basalt set handler om, at hvis id'et findes skal denne række opdateres (muligvis med det samme telefonnummer, det er sagen fuldstændigt underordnet), men hvis det ikke findes, skal rækken indsættes.
Tjah, ved nærmere eftersyn og -tanke giver hans oprindelige skitse til koden heller ikke så megen mening :)
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.