Ik heb een PHP script wat bv volgende query moet uitvoeren in MySQL:
Omdat mysql_query() geen multiple statements ondersteunt doe ik het nu zo:
($qM = bovenstaande query)
Het probleem is nu dat het wel eens misgaat, als het de pagina met het script wordt afgesloten of opnieuw aangeroepen terwijl een aantal van de 5 statements nog uitgevoerd moeten worden gaat de informatie in de tabel 'stuk'.
Hoe zou ik dit kunnen voorkomen?
code:
1
2
3
4
5
6
| UPDATE nodes SET node_lft = node_lft + 1 WHERE node_lft > 2; UPDATE nodes SET node_rgt = node_rgt + 1 WHERE node_rgt > 3; UPDATE nodes SET node_lft = node_lft - 3, node_rgt = node_rgt - 3 WHERE node_lft > 6 AND node_rgt < 8; UPDATE nodes SET node_lft = node_lft - 1 WHERE node_lft > 6; UPDATE nodes SET node_rgt = node_rgt - 1 WHERE node_rgt > 6 |
Omdat mysql_query() geen multiple statements ondersteunt doe ik het nu zo:
($qM = bovenstaande query)
code:
1
2
3
4
5
| // Split the query in parts foreach(explode(";", $qM) as $qMKey => $qMVal) { mysql_query($qMVal) or die("Move node (query part " . $qMKey . ") " . mysql_error()); } |
Het probleem is nu dat het wel eens misgaat, als het de pagina met het script wordt afgesloten of opnieuw aangeroepen terwijl een aantal van de 5 statements nog uitgevoerd moeten worden gaat de informatie in de tabel 'stuk'.
Hoe zou ik dit kunnen voorkomen?
[ Voor 5% gewijzigd door lucasvanlierop op 19-05-2004 10:16 ]
WinXP@P4-2,4 GHz+ Zalman 7000 cooler | ASUS P4PE | 1024MB DDR-RAM | 40 GB + 120 GB Seagate HD's | 2x Samsung 172T@Matrox G550+SiS 8 Mb PCI | RME Multiface