syntax error, unexpected end of file in
Mijn oude server MacMini is gecrached (hardware fout) met een database van een begraafplaats, ik heb daar nu een raspberry Pi 4 8Mb,
alles php en mysql werken allen ik had nog een oude versie van beide PHP aangepast werkt. kortweg wat doe ik hier als alles werkt.
Ik had, zoals velen gebruiker, problemen met de import van tekst file met de diakritische tekens,
Voor de databse gebruik ik filemaker op een Imac en maak daar een export naar csv file met UTF8 encoding.
Ik gebruik nu tijdelijk een raspberry pi tot dat alls werk zet ik alles over naar een provider.
Om de file in te lezen in mysql ging het perfect nu ik als programma's PHP en MySql naar de laatste verie
heb nu Mysqli alles aangepast tot de laatste import ik geruik daar een stukje PHP voor zie hier onder.
nu krijg ik fout melding.
Parse error: syntax error, unexpected end of file in /var/www/html/www.orkbegraafplaatsbussum.nl/data/dbimport/index.php on line 45
lijn 45 is de laatste van PHP file, ben al en aantal dage bezig en wil de data zo snel mogenlijk live hebben.
met dit stukje heb ik HAD ik GEEN problemen met diakritische characters.
bij voobaat dank, voor de helpers.
==============================================================
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
35
36
37
38
39
40
41
42
43
44
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
35
36
37
38
39
40
41
42
43
44
<?php
echo "Ben opgestart<BR>";
# MySQL database User ID, Password, Database name, and Table Name
$sql_server = "localhost";
$sql_id = "xxxxxx";
$sql_pwd = "xxxxx";
$sql_db = "begraafplaats";
$sql_tbl = "begraafplaats";
# Connect to the database
$mysqli = mysqli_connect($sql_server,$sql_id,$sql_pwd); // or die ("geen verbinding met de database");
# Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Connected successfully";
# Delete the current content of the table
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"DELETE FROM $sql_tbl") or die ("Invalid DELETE query");
# Optimize the current table (recover empty space)
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"OPTIMIZE TABLE $sql_tbl") or die ("Invalid OPTIMIZE query");
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"ALTER TABLE $sql_db AUTO_INCREMENT = 1")or die ("Invalid reset AUTO_INCREMENT");
# Load local comma separated, fields enclosed by quotes text database - File has to be in the same directory of this file
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY ') {
if !$result {
echo 'DB Error\n';
echo 'MySQL Error: ' . mysqli_error($mysqli);
exit;
}
# Get how many records are present in the table now
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,'SELECT * from $sql_tbl') or die ('Invalid SELECT query');
$rows_count = mysqli_num_rows($result);
echo 'Records: $rows_count' mysqli_free_result($result);
?>
echo "Ben opgestart<BR>";
# MySQL database User ID, Password, Database name, and Table Name
$sql_server = "localhost";
$sql_id = "xxxxxx";
$sql_pwd = "xxxxx";
$sql_db = "begraafplaats";
$sql_tbl = "begraafplaats";
# Connect to the database
$mysqli = mysqli_connect($sql_server,$sql_id,$sql_pwd); // or die ("geen verbinding met de database");
# Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Connected successfully";
# Delete the current content of the table
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"DELETE FROM $sql_tbl") or die ("Invalid DELETE query");
# Optimize the current table (recover empty space)
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"OPTIMIZE TABLE $sql_tbl") or die ("Invalid OPTIMIZE query");
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"ALTER TABLE $sql_db AUTO_INCREMENT = 1")or die ("Invalid reset AUTO_INCREMENT");
# Load local comma separated, fields enclosed by quotes text database - File has to be in the same directory of this file
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY ') {
if !$result {
echo 'DB Error\n';
echo 'MySQL Error: ' . mysqli_error($mysqli);
exit;
}
# Get how many records are present in the table now
mysqli_select_db($mysqli,$sql_db); $result = mysqli_query($mysqli,'SELECT * from $sql_tbl') or die ('Invalid SELECT query');
$rows_count = mysqli_num_rows($result);
echo 'Records: $rows_count' mysqli_free_result($result);
?>
==============================================================
gedeelte vaan het bestand: dbxport.txt welke ik wil lezen.
"Z12","zuster","","Aegidia","","","","","Zuster graven t.b.v. Nonnen Majella ziekenhuis, Marieenburg en Sint Olav stichting","","zuster Aegidia","","","26-3-1931",
"H1","Maria Nevelona Lijdia Geertruida","v.d.","Akker","21-9-1912","Delft","30-4-1945","Bussum","Zustergraven","","Maria Nevelona Lijdia Geertruida v.d. Akker","H1","32 jaar ","3-5-1945",
"T67","Constant Heinrich","","Albers","4-1-1877","","4-1-1961","","Volgens akte voornaam Heinrich Constanz","","Constant Heinrich Albers","T67","84 jaar ","4-1-1961",
"T67","Francisca Henriëtte Maria","","Albers","23-1-1910","","6-6-1992","","asbus","Admiraal","Francisca Henriëtte Maria Admiraal - Albers","T67","82 jaar ","9-6-1993",
"S34","Gijsbertus G.A. ( Bertie )","","Albers","21-2-1940","","5-11-1945","","","","Gijsbertus G.A. ( Bertie ) Albers","S34","5 jaar ","10-11-1945",
"A47","Jacobus Cornelis","","Albers","24-7-1907","Bussum","28-7-1964","Bussum","","","Jacobus Cornelis Albers","A47","57 jaar ","27-7-1960",
"T20","Jan ","","Albers","27-1-1862","","27-3-1927","","Bijgezet 31-03-1927","","Jan Albers","T20","65 jaar ","31-3-1927",
"S34","Johannes","","Albers","7-10-1902","","15-4-1983","","","","Johannes Albers","S34","80 jaar ","19-4-1983",
"S34","Johannus Martinus ( Hansje )","","Albers","6-11-1945","","6-2-1951","","","","Johannus Martinus ( Hansje ) Albers","S34","5 jaar ","6-2-1951",
"T20","Romanus Hendricus (Hanny)","","Albers","28-2-1904","","26-9-1967","","","","Romanus Hendricus (Hanny) Albers","T20","63 jaar ","26-9-1967",
"B28","Johannis","","Alders","31-3-1866","Bussum","10-3-1938","Bussum","zoon van Tijmen Alders en Willemijntje Prinsen.","","Johannis Alders","B28","71 jaar ","14-3-1930",
"M2","Sophia","","Alders","14-3-1871","","21-8-1943","","","Majoor","Sophia Majoor - Alders","M2","72 jaar ","24-8-1943",
"B60","Maria","","Allessie","27-8-1856","Amsterdam","21-7-1907","Bussum","dochter van Martinus Bernardus Stevens en Carolina Barbara Janssen","Vasterman","Maria Vasterman - Allessie","0","50 jaar ","21-7-1920",
=========================== Eind bestand===================================
Gewijzigd op 20/12/2021 23:03:56 door Henk de Sain
Vanaf lijn 30 na je gele commentaar moet dit werken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY '");
if (!$result) {
echo 'DB Error\n';
echo 'MySQL Error: ' . mysqli_error($mysqli);
exit;
}
# Get how many records are present in the table now
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,'SELECT * from $sql_tbl') or die ('Invalid SELECT query');
$rows_count = mysqli_num_rows($result);
echo 'Records: $rows_count'. mysqli_free_result($result);
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY '");
if (!$result) {
echo 'DB Error\n';
echo 'MySQL Error: ' . mysqli_error($mysqli);
exit;
}
# Get how many records are present in the table now
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,'SELECT * from $sql_tbl') or die ('Invalid SELECT query');
$rows_count = mysqli_num_rows($result);
echo 'Records: $rows_count'. mysqli_free_result($result);
Gewijzigd op 20/12/2021 23:14:33 door - Ariën -
ik hou je op de hoogte, ik ben maar een hobbyist van 74 jaar ik heb meer achter de rug dan voor de boeg dus ik wil het klaar hebben, ben alleen vrouw 5 jaar overleden en en zo bang dat als er met mij iets gebeurd alles weg is.Kinderen trekken dan overal al de stekker er uit.
mvg, Henk
Laat even weten welke error je precies krijgt.
Gewijzigd op 20/12/2021 23:46:52 door - Ariën -
de error melding is:
DB Error MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1
======================Hier is mijn versie =====================
?php
echo "Ben gestart<BR>";
# MySQL database User ID, Password, Database name, and Table Name
$sql_server = "localhost";
$sql_id = "gebruiker";
$sql_pwd = "password";
$sql_db = "begraafplaats";
$sql_tbl = "begraafplaats";
# Connect to the database
$mysqli = mysqli_connect($sql_server,$sql_id,$sql_pwd) or die ("geen verbinding met de database");
# Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Connected successfully<BR>";
# Delete the current content of the table
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"DELETE FROM $sql_tbl") or die ("Invalid DELETE query");
# Optimize the current table (recover empty space)
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"OPTIMIZE TABLE $sql_tbl") or die ("Invalid OPTIMIZE query");
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"ALTER TABLE $sql_db AUTO_INCREMENT = 1")or die ("Invalid reset AUTO_INCREMENT");
# ======================= vanaf hier gewijzicht ======================
# Load local comma separated, fields enclosed by quotes text database - File has to be in the same directory of this file
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY '");
if (!$result) {
echo 'DB Error ';
echo 'MySQL Error: ' . mysqli_error($mysqli);
exit;
}
# Get how many records are present in the table now
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,'SELECT * from $sql_tbl') or die ('Invalid SELECT query');
$rows_count = mysqli_num_rows($result);
echo 'Records: $rows_count'. mysqli_free_result($result);
?>
==============================================================
Henk
Code (php)
1
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY ','");
Gelukkig hebben we bij de reageer-pagina ook een knop voor codeblokken op het forum. Dat maakt het beter leesbaar.
Gewijzigd op 21/12/2021 10:29:48 door - Ariën -
nu het vullen in lezen van de data nog, daar kreeg ik weer een fout melding over permissies.
Warning: mysqli_query(): LOAD DATA LOCAL INFILE forbidden in /var/www/html/www.orkbegraafplaatsbussum.nl/data/dbimport/index.php on line 36
DB Error MySQL Error: LOAD DATA LOCAL INFILE is forbidden, check mysqli.allow_local_infile
even googlen ik ben niet de enige.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
?php
echo "Ben gestart<BR>";
# MySQL database User ID, Password, Database name, and Table Name
$sql_server = "localhost";
$sql_id = "root";
$sql_pwd = "ffw8enxinix";
$sql_db = "begraafplaats";
$sql_tbl = "begraafplaats";
# Connect to the database
$mysqli = mysqli_connect($sql_server,$sql_id,$sql_pwd) or die ("geen verbinding met de database");
# Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Connected successfully<BR>";
# Delete the current content of the table
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"DELETE FROM $sql_tbl") or die ("Invalid DELETE query");
# Optimize the current table (recover empty space)
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"OPTIMIZE TABLE $sql_tbl") or die ("Invalid OPTIMIZE query");
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"ALTER TABLE $sql_db AUTO_INCREMENT = 1")or die ("Invalid reset AUTO_INCREMENT");
# ======================= vanaf hier gewijzicht ======================
# Load local comma separated, fields enclosed by quotes text database - File has to be in the same directory of this file
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY ','");
if (!$result) {
echo 'DB Error ';
echo 'MySQL Error: ' . mysqli_error($mysqli);
exit;
}
# Get how many records are present in the table now
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,'SELECT * from $sql_tbl') or die ('Invalid SELECT query');
$rows_count = mysqli_num_rows($result);
echo 'Records: $rows_count'. mysqli_free_result($result);
?>
echo "Ben gestart<BR>";
# MySQL database User ID, Password, Database name, and Table Name
$sql_server = "localhost";
$sql_id = "root";
$sql_pwd = "ffw8enxinix";
$sql_db = "begraafplaats";
$sql_tbl = "begraafplaats";
# Connect to the database
$mysqli = mysqli_connect($sql_server,$sql_id,$sql_pwd) or die ("geen verbinding met de database");
# Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Connected successfully<BR>";
# Delete the current content of the table
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"DELETE FROM $sql_tbl") or die ("Invalid DELETE query");
# Optimize the current table (recover empty space)
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"OPTIMIZE TABLE $sql_tbl") or die ("Invalid OPTIMIZE query");
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"ALTER TABLE $sql_db AUTO_INCREMENT = 1")or die ("Invalid reset AUTO_INCREMENT");
# ======================= vanaf hier gewijzicht ======================
# Load local comma separated, fields enclosed by quotes text database - File has to be in the same directory of this file
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt' INTO TABLE $sql_tbl FIELDS TERMINATED BY ','");
if (!$result) {
echo 'DB Error ';
echo 'MySQL Error: ' . mysqli_error($mysqli);
exit;
}
# Get how many records are present in the table now
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,'SELECT * from $sql_tbl') or die ('Invalid SELECT query');
$rows_count = mysqli_num_rows($result);
echo 'Records: $rows_count'. mysqli_free_result($result);
?>
Ikzelf raad aan om een volledig (absoluut) pad te gebruiken.
https://stackoverflow.com/questions/7638090/load-data-local-infile-forbidden-in-php
Gewijzigd op 21/12/2021 14:40:06 door - Ariën -
start mijn php scipt maakt de database leeg.
start mysql -p
plak de regel er in
Code (php)
1
LOAD DATA LOCAL INFILE './dbexport.tab' INTO TABLE begraafplaats FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';a
en zie hier alles er in
https://ibb.co/w7tmqZt
Ik weer verder moet nog 300 graven doen maar dit werkt.
ik denk de de het een bug is in de PHP.
miscschien komt er WEL een oplossing.
Dank tot zo ver tenzij.….. een oplossing
mvg Henk
Het is een mysql error, dus zeker geen PHP bug. Al een volledig pad geprobeerd?
Je ziet op regel 15 "if" staan. Die is groen.
En op regel 4 zie je een string staan. Die staat tussen "" en is rood gekleurd.
Nu kijken we voorbij regel 30 en we zien op regel 32 weer "if" staan, maar nu is hij rood.
Dat betekent dat je ergens de mist in bent gegaan met je quootjes.
En dat rare kleuren start op regel 30.
Wat denk ik de eenvoudigste benadering is (en hoe ik het doe)
Zet een query-string altijd tussen " "
Dus $db->query( " " );
En dan plak je daar de complete werkende query tussen. Die je nu kennelijk via de command line hebt gedaan.
Strings die weer binnen de query staan, gaan dan tussen ' ', bijvoorbeeld
SELECT * FROM Tabel WHERE user='pietje';
Dus dan wordt het
$db->query( " SELECT * FROM Tabel WHERE user='pietje' " );
Adoptive doet het net andersom qua gebruik van " en ', maar is effectief hetzelfde.
Wel is het belangrijk dat je die consequent gebruikt: je gaat nu de mist in met het afsluiten van de query-string.
De eerst volgende keer dat je ergens een string waarde in php gebruikt, denkt php dat je daar juist eindelijk de string in query() afsluit en uiteindelijk kan php er geen chocola meer van maken.
Doorgaans met een unexpected XXX tot gevolg, waarbij XXX van alles kan zijn, ook een end-of-file.
Arien gaf eigenlijk ook al aan dat je een " miste aan het einde van die string, maar aangezien de query zelf ook al niet klopte (waar is dan de waarde waarmee de regels terminated-by zijn?) lost dat je probleem ook niet op.
ik heb het zelf wat aangeleerd maar verkeerd. ik heb gemerk dat ik de "" en ' ' door elkaar gebruikt. ik loop nu alles stap voor stap regel voor regel even langs. Er moet meer structuur in de code komen waar een ander, die na mij komt het kan begrijpen, het zelfde voor de comments en HOOFD en kleine letters. En dan ook nog 2 talen PHP en MYSQL. Ik moet even wat zoeken hoe de richtlijnen zijn.
voorlopig kan ik verder, Ik zeg altijd het probleem zit altijd tussen het scherm en de stoel in. Nogmaals hartelijk dank voor jullie hulp en het commentaar daar leer je wat van.
Met vriendelijke groet,
Henk
Zorg eerst tijdens de ontwikkeling in dat stukje code dat je er wat spaties tussen zet. Dan heb je een mooi overzicht wat je kan groeperen. Na afloop haal je de spaties weg.
PHPcode mag over meerdere regels, maar ook query's.
Om rond regel 30 er even uit te lichten:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt'
INTO TABLE $sql_tbl
FIELDS TERMINATED BY ';'
") ;
?>
mysqli_select_db($mysqli,$sql_db);
$result = mysqli_query($mysqli,"LOAD DATA LOCAL INFILE './dbexport.txt'
INTO TABLE $sql_tbl
FIELDS TERMINATED BY ';'
") ;
?>
Voordelen:
- als je niet meerdere PHP functies in 1 regel plaatst, loopt je tekst niet helemaal uit beeld rechts.
- je query hoeft ook niet in 1 regel: dat is vaak ook beter leesbaar als de moten onder elkaar staan.
NB het is niet nodig om voor elke query aan te geven dat je met de database $sql_db werkt.
Dat is genoeg om te doen na het connecten.
Dus eenmalig na regel 18 als je verbonden bent met de server.
alleen als je SQL bestanden laadt met query's die mogelijk een andere database op dezelfde server aanspreken heeft het zin om daarna te bevestigen dat je nog steeds met sql_db wilt werken.
top, " ', " " '
Toevoeging op 26/12/2021 21:31:56:
Beste alle Helper,
Het is mij gelukt om tijdens mijn lege Kerstdagen mijn dagen te vullen,
Alles werkt zowel de import als de diacritische characters komen mooi en correct in de database.
Door jullie hulp om mij op het goede spoor te zetten ben ik jullie erg dankbaar
Jaren geleden is er een kindje geboren nu een blij "kind" 74 jaar oud.
De Betere wensen in het nieuwe jaar.
dank jullie.
Henk
Henk de Sain op 26/12/2021 21:22:55:
Beste alle Helper,
Het is mij gelukt om tijdens mijn lege Kerstdagen mijn dagen te vullen,
Alles werkt zowel de import als de diacritische characters komen mooi en correct in de database.
Door jullie hulp om mij op het goede spoor te zetten ben ik jullie erg dankbaar
Jaren geleden is er een kindje geboren nu een blij "kind" 74 jaar oud.
De Betere wensen in het nieuwe jaar.
dank jullie.
Henk
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
?php
echo 'Verie 2.0 26-12-2021<BR>';
echo "start inlezen van het bestand in de database<BR>";
# MySQL database User ID, Password, Database name, table Name
$sql_server = 'localhost';
$sql_id = 'xxxx';
$sql_pwd = 'xxxxxxxx';
$sql_db = 'begraafplaats';
$sql_tbl = 'begraafplaats';
$sql_path = '/var/www/html/www.orkbegraafplaatsbussum.nl';
# verbinden met de database.
$conn = mysqli_connect($sql_server,$sql_id,$sql_pwd,false,128)
or die ('geen verbinding met de database');
# aanpassing voor local file inport
mysqli_options($conn, MYSQLI_OPT_LOCAL_INFILE, true);
# Controleer de verbing.
if ($conn->connect_error) {
die ('Verbinden kan niet gemaakt worden: ' . $mysqli->connect_error);
}
echo 'Verbinding geslaagd<BR>';
# select database.
mysqli_select_db($conn,$sql_db);
# ========= EERST OUDE DATA VERWIJDERN ============
# Verwijder de huidig data uit de tabel.
$result = mysqli_query($conn,"DELETE FROM $sql_tbl")
or die ('Invalid DELETE query');
# Optimaliseer de huidige tabel (herstel lege ruimte)
$result = mysqli_query($conn,"OPTIMIZE TABLE $sql_tbl")
or die ('Invalid OPTIMIZE query');
$result = mysqli_query($conn,"ALTER TABLE $sql_db AUTO_INCREMENT = 1")
or die ('Invalid reset AUTO_INCREMENT');
# ========= NU IMPORTEREN ===========================
echo 'bestand importeren :<BR>';
# Laad lokale bestand door scheidingsteken "\t" TAB gescheiden, en einde van de regel "\n"
echo 'inporteren in de tabel: '. $sql_tbl;
echo '<BR>Het path is ' .$sql_path;
$sql_load = "LOAD DATA LOCAL INFILE '$sql_path/data/dbimport/dbexport.tab'
INTO TABLE $sql_tbl
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'";
$result = mysqli_query($conn,$sql_load);
if (!$result) {
echo '<p>DB Error ';
echo '<p>MySQL Error: ' . mysqli_error($conn);
exit;
}
# ========== lekker gegeten de data zit er in ============
# Kijk nu hoeveel records er in de tabel staan
if ($result = mysqli_query($conn, "SELECT * FROM $sql_tbl")) {
echo '<P> Er zijn ' . mysqli_num_rows($result). ' Records ingelezen';
mysqli_free_result($result);
}
?>
echo 'Verie 2.0 26-12-2021<BR>';
echo "start inlezen van het bestand in de database<BR>";
# MySQL database User ID, Password, Database name, table Name
$sql_server = 'localhost';
$sql_id = 'xxxx';
$sql_pwd = 'xxxxxxxx';
$sql_db = 'begraafplaats';
$sql_tbl = 'begraafplaats';
$sql_path = '/var/www/html/www.orkbegraafplaatsbussum.nl';
# verbinden met de database.
$conn = mysqli_connect($sql_server,$sql_id,$sql_pwd,false,128)
or die ('geen verbinding met de database');
# aanpassing voor local file inport
mysqli_options($conn, MYSQLI_OPT_LOCAL_INFILE, true);
# Controleer de verbing.
if ($conn->connect_error) {
die ('Verbinden kan niet gemaakt worden: ' . $mysqli->connect_error);
}
echo 'Verbinding geslaagd<BR>';
# select database.
mysqli_select_db($conn,$sql_db);
# ========= EERST OUDE DATA VERWIJDERN ============
# Verwijder de huidig data uit de tabel.
$result = mysqli_query($conn,"DELETE FROM $sql_tbl")
or die ('Invalid DELETE query');
# Optimaliseer de huidige tabel (herstel lege ruimte)
$result = mysqli_query($conn,"OPTIMIZE TABLE $sql_tbl")
or die ('Invalid OPTIMIZE query');
$result = mysqli_query($conn,"ALTER TABLE $sql_db AUTO_INCREMENT = 1")
or die ('Invalid reset AUTO_INCREMENT');
# ========= NU IMPORTEREN ===========================
echo 'bestand importeren :<BR>';
# Laad lokale bestand door scheidingsteken "\t" TAB gescheiden, en einde van de regel "\n"
echo 'inporteren in de tabel: '. $sql_tbl;
echo '<BR>Het path is ' .$sql_path;
$sql_load = "LOAD DATA LOCAL INFILE '$sql_path/data/dbimport/dbexport.tab'
INTO TABLE $sql_tbl
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'";
$result = mysqli_query($conn,$sql_load);
if (!$result) {
echo '<p>DB Error ';
echo '<p>MySQL Error: ' . mysqli_error($conn);
exit;
}
# ========== lekker gegeten de data zit er in ============
# Kijk nu hoeveel records er in de tabel staan
if ($result = mysqli_query($conn, "SELECT * FROM $sql_tbl")) {
echo '<P> Er zijn ' . mysqli_num_rows($result). ' Records ingelezen';
mysqli_free_result($result);
}
?>
Code (php)
Ik weet niet om hoeveel records het gaat, maar waar ik werk, gaat het soms om honderduizenden records.
Ter vergelijk: als de manager van een supermarkt wil weten of er nog cola besteld moet worden:
a) stuur de vakkenvuller om alle flessen cola uit de winkel op te halen naar kantoor. En als hij terugkomt, tel hoeveel hij er bij zich heeft.
b) vraag de vakkenvuller om te tellen in de winkel en als het terugkomt met zijn papiertje, vraag het getal dat hij erop geschreven heeft.
Effectief weet je in beide gevallen het aantal. Alleen is vakkenvuller in optie A veel meer werk aan het verzetten.
Net zo kent SQL de functie COUNT(). Dan komt in een paar bytes (voor het getal) het antwoord in handen van PHP.
Quote:
Mijn oude server MacMini is gecrached (hardware fout) met een database van een begraafplaats
Off topic: gecondoleerd met de Mac Mini. Misschien kan je daar nog (Debian) Linux op loslaten? Ik heb daarmee ooit een G4-laptop nieuw leven in weten te blazen. Als er iets stuk is geeft Linux ook aan wat er precies stuk is, eventueel is een onderdeel nog te vervangen.
Ik heb de mac-mini server aan de kant gezet en een 2 raspberry pi's 4b met 8gb ingezet waarvan 1 life staat en de ander voor test local van de web site. Het scheeld ook in de stroom kosten een mac-mine lust wel wat.
De raspberry zijn tijdelijk alles gaat over naar een provider aangezien dat mijn leeftijd een rol kan spelen ik ben weduwnaar en alleen.
de hele site heeft mij 15 jaar werk opgeleverd. Ik ben blij dat alles weer werkt alleen de HTML pagina's nog ik kan alleen geen wordpress thema vinden voor een begraafplaats.
Henk
Henk de Sain op 27/12/2021 21:15:13:
Recatie op het vorige bericht, het aantal records dat ik in lezen ruim 3900 dus zoveel zijn het er niet de tijd is secondes.
Maar het totaal ophalen in plaats van alles te tellen, dat is wel efficiënter.
Zal nog weinig uitmaken, maar zelf zou ik het goed doen als het inderdaad beter kan.
Quote:
Ik ben blij dat alles weer werkt alleen de HTML pagina's nog ik kan alleen geen wordpress thema vinden voor een begraafplaats.
Je kan altijd de kleuren en de fonts wel aanpassen.