sql splitsen in commando's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

19/10/2022 18:35:56
Quote Anchor link
Hoi

Ik heb een lijst met commando's. gewoon opeen volgend gesplits met punt komma zoals het hoort.
Ik splist de totale lijst op ; en voer commando per commando uit om een controle te hebben in geval van fouten.

Nu bevatten sommige commando's ook een ; zoals
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO trn_spelers VALUES("295", "10", "r", "j", "0", "0", "0", "13718", "0", "260746", "0", "0", "1", "0", "Voormalig kampioen;Simultaan uitslag +5=2-3", "78.21.24.229", "", "Jan Remue", "2017-12-04 00:00:00");

Hoe kan ik correct splitsen?

Jan
 
PHP hulp

PHP hulp

08/02/2023 14:17:53
 
Bart Smulders

Bart Smulders

19/10/2022 21:51:39
Quote Anchor link
Gebruik str_replace() voor je de gegevens in je query gooit.
 
Ad Fundum

Ad Fundum

20/10/2022 11:42:47
Quote Anchor link
Je hebt meer nodig dan explode(). Je moet toch rekening houden met de ";", als onderdeel van het commando. Die punt-komma moet op een eenduidige manier worden ge-escaped. Neem een voorbeeld aan SQL, dan moet je bij het escapen van een " gewoon tweemaal een " gebruiken (""), of je doet iets met de backslash en een " (\").
 
Ward van der Put
Moderator

Ward van der Put

20/10/2022 12:34:42
Quote Anchor link
De puntkomma die een SQL-commando afsluit, staat in de regel pal voor een regeleinde. Verder beginnen de meeste SQL-commando's in een datadump waarschijnlijk met INSERT of misschien UPDATE. Je kunt dus redelijk trefzeker splitsen op achtereenvolgens:

- puntkomma
- regeleinde
- INSERT of UPDATE

Een andere oplossing is een multi_query() verpakken in een transactie die je bij fouten kunt terugrollen.
 



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.