Omdat ik hier al een paar keren goed ben geholpen. een nieuwe vraag.
Dit is de foutmelding:
rouwbrief010000
Fatal error: Uncaught Error: Call to undefined function mysql_fetch_assoc() in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/export_naar_csv.php:25
Stack trace:
#0 {main}
thrown in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/export_naar_csv.php on line 25
En zoals altijd zie ik het niet. Geprobeerdmet qoutes, bacticks enz.
Dit is mijn code:
<?php
// output headers so that the file is downloaded rather than displayed
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
// mysql database connection details
include '../instellingen.php';
// gegevens uit een keuzeformulier waar ze bestand en begin en eindrecord kunnen kiezen.
$bestand = $_POST['bestand']; echo $bestand;
$beginrec = $_POST['beginrec']; echo $beginrec;
$eindrec = $_POST['eindrec']; echo $eindrec;
// open connection to mysql database
$conn = new mysqli($database_adres, $database_login_naam, $database_login_wachtwoord, $database_naam);
//connectie testen
if ($conn->connect_error)
{
die("verbinding mislukt: ".$conn->connect_error);
}
// fetch mysql table rows
$sql = "select * from $bestand WHERE IDR BETWEEN $beginrec AND $eindrec";
$result = $conn->query($sql);
$fp = fopen('books.csv', 'w');
while ($row = mysql_fetch_assoc($result)) fputcsv($fp, $row);
fclose($fp);
//close the db connection
mysqli_close($connection);
?>
En wat heb je zelf inmiddels al geprobeerd om het probleem op te lossen? Heb je al gekeken naar de specifieke foutmelding? En zo ja, wat heb je daarmee gedaan?
Dit is ondertussen de stand van zaken:
foutmelding
rouwbrief05000
Fatal error: Uncaught Error: Call to a member function fetch_array() on bool in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/export_naar_csv.php:27
Stack trace:
#0 {main}
thrown in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/export_naar_csv.php on line 27
Huidige code:
<?php
$sql = "select * from '$bestand' WHERE 'IDR' BETWEEN `$beginrec` AND `$eindrec`";
?>
Ik heb in je eerdere topic betoogd dat "men" geen backtics zou moeten gebruiken.
Niet iedereen is het er mee eens.
Maar hier zie je dus een query waaruit de verwarring blijkt: je verwisselt hier de single quotes en backtics:
Het zou werken *) met zowel
<?php
$sql = "select * from `$bestand` WHERE `IDR` BETWEEN '$beginrec' AND '$eindrec'";
?>
als met
<?php
$sql = "select * from $bestand WHERE IDR BETWEEN '$beginrec' AND '$eindrec'";
?>
waarbij de laatste mijn voorkeur heeft.
*): aangenomen dat er naast deze query-syntax-fout niet nog meer dingen fout zijn
[quote="Ignace Verschaeve op 02/11/2021 08:36:34"]
Dit is ondertussen de stand van zaken:
En wat heb je zelf inmiddels al geprobeerd om het probleem op te lossen? Heb je al gekeken naar de specifieke foutmelding? En zo ja, wat heb je daarmee gedaan?
[/quote]
Ik ben er al uren mee bezig geweest. En ik zie en lees de foutmelding maar ik heb nog geen tips gekregen over hoe ik het oplos. Ik ben al jaren medewerker op een forum en heb jaren gewerkt om klanten te helpen. Als een klant een foutmelding kreeg op zijn TV of PC dan was mijn vraag niet of ze dat gezien hadden maar wel of ze dit of dat al geprobeerd hadden. Ik stuurde geen klanten naar huis met de vraag wat heb je er al aan gedaan? Dat is als naar de dokter gaan en zeggen dat je hartkloppingen hebt en die zou dan de vraag stellen wat heb je er al aan gedaan? Als jij mij nu uitlegt wat die specifieke foutmelding nu betekent en uitlegt wat ik eraan kan doen dan zijn we een stap verder. ;-)
Fatal error: Uncaught Error: Call to a member function fetch_array() on bool in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/export_naar_csv.php:27
"fout:
Je doet een aanroep naar de functie (method van een object / member function) genaamd fetch_array() op een Boolean. (een boolean is true / false en een boolean is geen object).
Dit alles vindt plaats op regel 27 van .../export_naar_csv.php"
aldaar zien wij:
$row = $result -> fetch_array(MYSQLI_ASSOC);
Daar zien we inderdaad fetch_array().
En $result is volgens de foutmelding een Boolean, en geen object.
Waar komt $result vandaan?
Zie regel 22: $result = $conn->query($sql);
query() geeft normaal een resultset terug (bij een select-query), maar in dit geval een boolean.
Je kunt het opzoeken in de manual op php.net, maar de snelle versie "als het uitvoeren van de query mislukt, dan geeft deze functie FALSE terug).
"Dus" de query is mislukt.
Redenen?
* de query bevat een syntax fout
* de query doet iets wat niet past bij de database (een tabel of kolom bestaat helemaal niet)
* je hebt geen verbinding met de database.
Dat kún je opvragen met de mysql error functies.
Maar aangezien je nogal hardnekkig de opmerkingen over quotes in de query die op verkeerde plekken staan negeert, zou ik daar eens mee beginnen.
Als je wat meer bedreven bent met OO, dan kan je altijd nog een centrale foutafhandeling maken door de MySQLi klasse uit te breiden, zoals in voorbeeld 19 van de tutorialtutorial.
En ik zie en lees de foutmelding maar ik heb nog geen tips gekregen over hoe ik het oplos.
Dat komt omdat we ook een stukje eigen inzet verwachten. Jij plempt hier nu al een paar keer een stuk code neer met de opmerking 'werkt niet'. Wij willen dan graag zien wat je zelf geprobeerd hebt om het op te lossen. Daarbij willen we ook een concrete vraag van jou zien. Als je de foutmelding niet snapt, stel daar dan een vraag over. Dat komt wat prettiger over dan dat je hier iets plaatst zonder een concrete vraag te stellen.
Ignace Verschaeve op 02/11/2021 12:33:15
Ik ben al jaren medewerker op een forum en heb jaren gewerkt om klanten te helpen. Als een klant een foutmelding kreeg op zijn TV of PC dan was mijn vraag niet of ze dat gezien hadden maar wel of ze dit of dat al geprobeerd hadden. Ik stuurde geen klanten naar huis met de vraag wat heb je er al aan gedaan?
Hartstikke leuk, maar jij bent geen klant en ik geen verkoper ;-) We zijn gewoon forumleden die elkaar proberen te helpen. En dat komt van 2 richtingen. Toon dus zelf ook wat inzet ... laat weten wat je niet snapt en waar je op vastloopt. Snap je de foutmelding niet? Geef dan aan wat je niet snapt. Dat is iets anders dan een lapje code en een foutmelding plaatsen en verwachten dat iemand anders al het werk doet. Daarnaast zijn er al wat tips gegeven, waar je maar weinig mee lijkt te doen.
Ignace Verschaeve op 02/11/2021 12:33:15
Dat is als naar de dokter gaan en zeggen dat je hartkloppingen hebt en die zou dan de vraag stellen wat heb je er al aan gedaan? Als jij mij nu uitlegt wat die specifieke foutmelding nu betekent en uitlegt wat ik eraan kan doen dan zijn we een stap verder. ;-)
Hartkloppingen worden onderhuids opgewekt door iets wat jij niet kunt zien. Deze vastlopende code heb jij echter zelf gerpoduceerd en is gewoon inzichtelijk, dus die vergelijking gaat niet op. Het is meer alsof je naar de dokter gaat en zegt "Dokter m'n arm bloedt!", waarop de dokter aan jou vraagt "Heb je al geprobeerd om die satéprikker eruit te halen?"
Fatal error: Uncaught Error: Call to a member function fetch_array() on bool in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/export_naar_csv.php:27
"fout:
Je doet een aanroep naar de functie (method van een object / member function) genaamd fetch_array() op een Boolean. (een boolean is true / false en een boolean is geen object).
Dit alles vindt plaats op regel 27 van .../export_naar_csv.php"
aldaar zien wij:
$row = $result -> fetch_array(MYSQLI_ASSOC);
Daar zien we inderdaad fetch_array().
En $result is volgens de foutmelding een Boolean, en geen object.
Waar komt $result vandaan?
Zie regel 22: $result = $conn->query($sql);
query() geeft normaal een resultset terug (bij een select-query), maar in dit geval een boolean.
Je kunt het opzoeken in de manual op php.net, maar de snelle versie "als het uitvoeren van de query mislukt, dan geeft deze functie FALSE terug).
"Dus" de query is mislukt.
Redenen?
* de query bevat een syntax fout
* de query doet iets wat niet past bij de database (een tabel of kolom bestaat helemaal niet)
* je hebt geen verbinding met de database.
Dat kún je opvragen met de mysql error functies.
Maar aangezien je nogal hardnekkig de opmerkingen over quotes in de query die op verkeerde plekken staan negeert, zou ik daar eens mee beginnen.
Dit noem ik nu eens een deftig antwoord. De queri is mislukt en je zegt mij de mogelijke oorzaken. Bedankt, nu weet ik waar ik moet zoeken. Mocht ik een expert zijn heb ik geen hulp nodig.
[size=xsmall]Toevoeging op 02/11/2021 17:52:29:[/size]
Ozzie PHP op 02/11/2021 14:20:33
[quote="Ignace Verschaeve op 02/11/2021 12:33:15"]
En ik zie en lees de foutmelding maar ik heb nog geen tips gekregen over hoe ik het oplos.
Dat komt omdat we ook een stukje eigen inzet verwachten. Jij plempt hier nu al een paar keer een stuk code neer met de opmerking 'werkt niet'. Wij willen dan graag zien wat je zelf geprobeerd hebt om het op te lossen. Daarbij willen we ook een concrete vraag van jou zien. Als je de foutmelding niet snapt, stel daar dan een vraag over. Dat komt wat prettiger over dan dat je hier iets plaatst zonder een concrete vraag te stellen.
Dat komt omdat we ook een stukje eigen inzet verwachten. Jij plempt hier nu al een paar keer een stuk code neer met de opmerking 'werkt niet'. Wij willen dan graag zien wat je zelf geprobeerd hebt om het op te lossen. Daarbij willen we ook een concrete vraag van jou zien. Als je de foutmelding niet snapt, stel daar dan een vraag over. Dat komt wat prettiger over dan dat je hier iets plaatst zonder een concrete vraag te stellen.
[/quote]
Mijn concrete vraag staat al in het begin van de topic. "Waar ga ik in de fout"
Ondertussen heb ik de raadgevingen die er stonden uitgevoerd. En heb ik verschillende dingen geprobeerd. Maar niemand heeft er mij op gewezen dat ik mogelijks geen connectie hebt met mijn database. Sorry maar zo heb ik nog nooit mensen geholpen. Ik verwacht niet dat je mij een complete code geeft, verre van, maar je ziet zo dat ik de foutmelding niet snapte, want dan zou ik wel geweten hebben waar te zoeken. Ik dacht altijd dat fora er waren om mensen te helpen, hoe dom ze ook zijn.