Avatar billede chries Nybegynder
31. marts 2003 - 09:52 Der er 9 kommentarer og
2 løsninger

PHP og mysql

Bliver et PHP script altid udført?

hvis jeg nu har:

OPDATER MYSQL TABEL1.
PRINT noget html
OPDATER MYSQL TABEL2.

kan script udførselen blive afbrudt mellem de to tabeller ?
Avatar billede schaefner Juniormester
31. marts 2003 - 10:00 #1
Du kan afslutte din php-kode og udskrive html og så starte din php-kode igen.

<?php
// Noget
?>
<b>Hej</b>
<?php
// Noget andet
?>
Avatar billede hmm10 Nybegynder
31. marts 2003 - 10:02 #2
Hvis det står frit: ja, det bliver afbrudt. Hvis det er adskilt med if-else sætning er det noget helt andet.. :)
Avatar billede chries Nybegynder
31. marts 2003 - 10:09 #3
det jeg mener er at hvis jeg har:
<?php
  mysql_query( bla bla bla ); //1

  kode kode kode //2

  mysql_query( bla bla bla ); //3
?>

kan 1 og 2 blive udført, mens 3 ikke? hvis f.eks brugeren lige lukker browseren når 2 er ved at blive udført.
Avatar billede schaefner Juniormester
31. marts 2003 - 10:11 #4
3'eren vil også blive udført, men du kan selvfølgelig ikke gardere dig imod at scriptet ikke når at blive udført :)
Avatar billede fsconsult.dk Nybegynder
31. marts 2003 - 10:19 #5
Hvis scriptet bliver kørt vil PHP kalde MySQL med begge dine opdateringer.

Dette betyder dog IKKE at du er sikret at enten begge eller ingen af dine opdateringer bliver gennemført (hvis det er atomare funktioner du tænker på).
Avatar billede chries Nybegynder
31. marts 2003 - 11:14 #6
hvis jeg smider de to opdateringer i én query, ville de så enten blive begge udført eller ingen af dem. (ifald noget skulle ske)
Avatar billede schaefner Juniormester
31. marts 2003 - 11:33 #7
De vil alle blive udført, men prøv dig frem og se hvad der sker :)

mysql_query("UPDATE tabel SET raekke='tekst' WHERE id=1");
mysql_query("UPDATE tabel SET raekke='tekst' WHERE id=2");

De vil begge to blive udført uden problemer.
Avatar billede chries Nybegynder
31. marts 2003 - 11:38 #8
ja, men er der nogen garanti for det :) at det går godt i 99% af alle tilfælde er ikke godt nok for mig :)

jeg tænkte på:
mysql_query("UPDATE tabel SET raekke='tekst' WHERE id=1;UPDATE tabel SET raekke='tekst' WHERE id=2;");

så burde de enten begge prøvet evalueret eller ingen. (hvis man da må sende to ad gangen :)
Avatar billede andy Nybegynder
31. marts 2003 - 11:43 #9
http://dk.php.net/manual/en/function.ignore-user-abort.php

Brug ignore_user_abort(true) så ignorer dit script hvis surferen klikker "STOP".
Avatar billede chries Nybegynder
31. marts 2003 - 11:49 #10
ok det var det jeg søgte :)
Avatar billede fsconsult.dk Nybegynder
31. marts 2003 - 12:36 #11
Da MySQL ikke understøtter transaktioner (medmindre du kører 4.0 eller bruger nnoDB tabeller), skal du stadig være opmærksom på at ændringer du laver med UPDATE 1 gælder uanset om UPDATE 2 går godt eller fejler..
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