Is het mogelijk om via php naar mysql een soort van test query te sturen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michael

michael

25/01/2008 18:30:00
Quote Anchor link
Ik wil graag weten van te voren of de query geen errors geeft. Ik wil namelijk 3 queries runnen maar als er 1 fout gaat dan gaat het in de soep.

Is het mogelijk om bijvoorbeeld een delete query te test runnen zonder dat hij echt velden verwijderd?

en dat je dan zoiets kan doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
$query1
="DELETE FROM tabelname WHERE id=".1;
$query2="SELECT * FROM tabelname";
if(test_query($query1)){
  mysql_query($query1)or die(mysql_error().'<br><br>In Query:'.$query1);
  mysql_query($query2)or die(mysql_error().'<br><br>In Query:'.$query2);
}

?>


alvast bedankt voor de reactie :) Ikzelf denk dat het niet mogelijk is want ik kon het nergens vinden, maar ik hoop het wel want dat zou een probleempje hier oplossen :)
Gewijzigd op 01/01/1970 01:00:00 door Michael
 
PHP hulp

PHP hulp

05/11/2024 20:45:52
 
Cake Masher

Cake Masher

25/01/2008 18:35:00
Quote Anchor link
dat is niet nodig als je het goed inelkaar zet..

1) verwijder query
2) kijkt of die query gelukt is
3) zo ja, volgende query
4) kijkt of die query gelukt is
5) zo ja, volgende query
6) zo nee, kan je eventueel de gedelete query weer terug adden
7) Error afhandeling

dat is basis..?


een query zou op zich zelf niet fout moeten gaan als je hem goed inelkaar zet, tenzij het met POST & GET vab. te maken heeft.. bijv. met login's.

Dan zou je toch egt moeten kijken of de query gelukt is of niet..
 
Michael

michael

25/01/2008 18:40:00
Quote Anchor link
het is best krom inderdaad. maarja.... Het zou nu heel erg goed uitkomen. Maar ik had al wel verwacht dat het niet mogelijk was :)
 
Cake Masher

Cake Masher

25/01/2008 18:42:00
Quote Anchor link
ik weet niet of het mogelijk is of niet, maar zo kan het ook.. zelf zie ik ook geen reden om hem te testen als je hem net zo goed meteen uit kan voeren en kijken of het gelukt is...
 
Michael

michael

25/01/2008 18:45:00
Quote Anchor link
Het is meer een extra controle. Ik moet ongeveer 10 queries uitvoeren achter elkaar. En als er 1 in de toekomst toevallig verkeerd gaat dan heb ik liever dat ze allemaal verkeerd gaan ipv de laatste. Als de eerste 9 dus al gerunt zijn.

ik wil dus of niets of alles maar niet ertussen in. Een extra controle. Maar ik moet ze gewoon goed maken zonder dat het nodig is :)
Gewijzigd op 01/01/1970 01:00:00 door michael
 
Jurgen assaasas

Jurgen assaasas

25/01/2008 18:49:00
Quote Anchor link
michael schreef op 25.01.2008 18:45:
Het is meer een extra controle. Ik moet ongeveer 10 queries uitvoeren achter elkaar. En als er 1 in de toekomst toevallig verkeerd gaat dan heb ik liever dat ze allemaal verkeerd gaan ipv de laatste. Als de eerste 9 dus al gerunt zijn.

ik wil dus of niets of alles maar niet ertussen in. Een extra controle. Maar ik moet ze gewoon goed maken zonder dat het nodig is :)


Daar heb je transactions voor, als er één van de groep query's mislukt dan kun je alles terug draaien. Let wel op dit moet InnoDB zijn als engine als je dit wil gebruiken!
 
Frank -

Frank -

25/01/2008 18:49:00
Quote Anchor link
Het klinkt alsof je een TRANSACTION nodig hebt.

Maar, het uitvoeren van queries kan nooit in de soep lopen, het kan hooguit fout gaan. En omdat dit altijd het geval is, doe je iets aan foutafhandeling voor die situaties waarin het fout gaat.

Dat iets fout gaat, is de normaalste zaak van de wereld, ga daar niet moeilijk over doen, accepteer dat en anticipeer daar op.

@Rick: Met 'terug adden' mag ik hopen dat je doelt op een ROLLBACK in een TRANSACTION. Zo niet, dan kan het hopeloos fout gaan. Je kunt namelijk niet zomaar de data die in 1 record stond weer terugzetten, er zijn vrijwel altijd andere gegevens in andere tabellen met FOREIGN KEY's aan deze data gekoppeld. Wanneer je dan 1 record weggooit, volgt de rest automatisch. Hoe denk jij dat terug te zetten? Dat gaat niet. Vandaar dat je met een ROLLBACK de TRANSACTION ongedaan maakt, dan ben je weer terug bij af en is jouw data in (redelijk) veilige handen. (het blijft MySQL, het blijft kut). In MySQL MOET je de innoDB-engine gebruiken, met de overige engines kun je geen database bouwen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Michael

michael

25/01/2008 18:53:00
Quote Anchor link
Ok bedankt! Ik laat het lekker zo en met een paar extra test fases hoop ik dat dit nooit fout gaat!
 
Frank -

Frank -

25/01/2008 18:55:00
Quote Anchor link
michael schreef op 25.01.2008 18:53:
Ok bedankt! Ik laat het lekker zo en met een paar extra test fases hoop ik dat dit nooit fout gaat!
En waarom wil je niks aan foutafhandeling en/of transactions doen? Stelt niks bijzonders voor, in 5 tot 10 minuten heb je dat wel klaar. Gevolg: Je weet (vrij) zeker dat de data in de database correct is.

Althans, voor zover je met MySQL zeker kunt zijn van correcte data... Niet dus, maar dat willen de meesten niet weten.
 
Michael

michael

25/01/2008 19:04:00
Quote Anchor link
Foutafhandeling doe ik ook wel. Maar als het bij query 5 fout loopt krijg ik ook wel een hele mooie foutafhandeling. Maar dan zijn die andere queries al uitgevoerd.

Transactions heb ik eerlijk gezegd nog nooit van gehoord en ik op dit moment op mijn werk heb ik geen tijd om dat uit te zoeken. Zodra ik thuis ben en tijd heb even kijken hoe dat in zijn werk gaat!
 
Frank -

Frank -

25/01/2008 19:15:00
Quote Anchor link
Voorbeeldje met 2 INSERT-queries waarvan de 2e mislukt en waarbij alles ongedaan wordt gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
BEGIN;
INSERT INTO tabelnaam (kolom) VALUES ('waarde');
INSERT INTO tabelnaam (kolom) VALUES (waarde);
-- oeps! mislukt! Quotes om de waarde 'waarde' ontbreken...
ROLLBACK;

Mocht alles zijn gelukt, dan doe je i.p.v. een ROLLBACK; een COMMIT;

Stelt niks niks voor. Je zult wel iedere query moeten controleren! Maar dat is niks bijzonders, doe je toch al.
 
Michael

michael

25/01/2008 19:26:00
Quote Anchor link
wow wat een geweldige functie. Thanks!! echt te makkelijk ook :D
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.