JSON Array to Query
Ik heb:
Deze array is bijvoorbeeld;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
(
[0] => Array
(
[number] => 1
[ledger] => Grootboekrekening 1
[project] => project 1
[relation] => relatie
[debit] => 100
[credit] => 100
[tax] => 20
[date] => 2019-19-10
[postingdate] => 2019-19-10
[description] => omschrijving
[period] => periode
[id] => DE2A0B8D-E6A2-B6E3-6618-F1FDBF76DE87
)
[1] => Array
(
[number] => 1
[ledger] => Grootboekrekening 2
[project] => project 2
[relation] => relatie
[debit] => 100
[credit] => 100
[tax] => 20
[date] => 2019-19-10
[postingdate] => 2019-19-10
[description] => omschrijving
[period] => periode
[id] => AE2992D0-11DC-FFB4-1AD5-3E694CC6EEA4
)
)
[0] => Array
(
[number] => 1
[ledger] => Grootboekrekening 1
[project] => project 1
[relation] => relatie
[debit] => 100
[credit] => 100
[tax] => 20
[date] => 2019-19-10
[postingdate] => 2019-19-10
[description] => omschrijving
[period] => periode
[id] => DE2A0B8D-E6A2-B6E3-6618-F1FDBF76DE87
)
[1] => Array
(
[number] => 1
[ledger] => Grootboekrekening 2
[project] => project 2
[relation] => relatie
[debit] => 100
[credit] => 100
[tax] => 20
[date] => 2019-19-10
[postingdate] => 2019-19-10
[description] => omschrijving
[period] => periode
[id] => AE2992D0-11DC-FFB4-1AD5-3E694CC6EEA4
)
)
Nu wil ik deze array omzetten naar sql en in de database plaatsen doormiddel van;
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
foreach ($someArray as $key => $value) {
$query = "INSERT INTO journal (number, ledger, project, relation, debet, credit, tax, date, postingdate, description, period, Id) VALUES ('"$value['number']"','"$value['ledger']"','"$value['project']"','"$value['relation']"','"$value['debet']"','"$value['credit']"','"$value['tax']"','"$value['date']"','"$value['postingdate']"','"$value['description']"','"$value['period']"','"$value['Id']"')";
$statement = $connect->prepare($query);
$statement->execute();
$query = "";
}
?>
foreach ($someArray as $key => $value) {
$query = "INSERT INTO journal (number, ledger, project, relation, debet, credit, tax, date, postingdate, description, period, Id) VALUES ('"$value['number']"','"$value['ledger']"','"$value['project']"','"$value['relation']"','"$value['debet']"','"$value['credit']"','"$value['tax']"','"$value['date']"','"$value['postingdate']"','"$value['description']"','"$value['period']"','"$value['Id']"')";
$statement = $connect->prepare($query);
$statement->execute();
$query = "";
}
?>
Nu krijg ik in mijn console de volgende melding;
Quote:
<b>Parse error</b>: syntax error, unexpected '$value' (T_VARIABLE) in.
Iemand een idee hoe ik dit kan oplossen??
Alvast bedankt mocht iemand reageren.
Edit:
Code-tags geplaatst in het bericht. Gelieve dit voortaan zelf te doen.
Zie ook de opmaak-codes in de Veel Gestelde Vragen.
Alvast bedankt
Zie ook de opmaak-codes in de Veel Gestelde Vragen.
Alvast bedankt
Gewijzigd op 29/10/2019 13:08:03 door - Ariën -
VALUES ('" . $value['number'] . "','" . $value['ledger'] . etc ...
Gewijzigd op 28/10/2019 16:32:07 door Zwolly Wood
Kan je die toevoegen aan je code? Zie ook de opmaakcodes in de Veelgestelde Vragen.
Verder een tipje:
Je kan je SQL-query ook in stukken hakken met enters, dan heb je een mooi overzicht over het gebruik van de quotes.
Gewijzigd op 28/10/2019 16:33:34 door - Ariën -
Ook loont het de moeite om dit in een transactie te zetten.
Stel dat de data ergens halverwege een quote in een omschrijvingsveld heeft of wat dan ook. Dan breekt je import en heb je de halve batch (vrij vertaald: stront) in je database zitten.
En dan ehm... Wacht eens even.
Je maakt hier gebruik van prepared statements, en ook weer niet, want je plakt gewoon de waarden in de querystring. Dat is echt NIET de bedoeling van prepared statements.
Wat jij hier doet is equivalent met vloeken in de kerk... Snap je het principe van prepared statements?
Bedankt voor de reactie allen. Dit is mijn eerste 'projectje' en probeer alles überhaupt werkend te krijgen :). Ik ga me verder verdiepen in transacties en prepare statements