Ik vermoed dat pragematch een typfout is, en dat dit preg_match moet zijn. Als je de error reporting aan zet, dan zal je hier wel een foutmelding over moeten krijgen.
Aan de URL te zien heb je een paar velden niet ingevuld.
Haal die location redirect op lijn 13 even tijdelijk weg, en kijk eens met print_r($_POST); wat er in je POST-request staat.
Uiteindelijk is het ook raadzaam om de gebruikersnaam en mailadres uit die redirect te halen. Waarom zou je die gebruiken?
Persoonlijk ben ik meer van het aangeven van welke validaties er mislukken, in plaats van een globale foutmelding waarbij de gebruiker het maar opnieuw moet proberen zonder te weten wat er mis is.
Zou je het tussen [code] en [/code] tags kunnen plaatsen? Dan is het beter leesbaarder.
Allereerst beveilig je jouw data niet tegen corruptie en SQL-injection. Je zou dus nooit 's-Hertogenbosch kunnen invullen, en iedereen met kwade bedoelingen kan je query naar eigen wens aanpassen. Dus pas [php]mysqli_real_escape_string[/php] toe op je variabelen die je in je query gebruikt.
Over je wachtwoorden. Ik raad zelf aan om de wachtwoorden te hashen met [php]password_hash[/php], en bij een inlogcontrole met [php]password_verify[/php] te controleren of de invoer gelijk is met wat er als hash in de database staat.
Verder gebruik je $Plantenrijk, maar gebruik je in je query opeens $Planterijk.
PHP kent niet het grammaticale groene boekje. Maar met menig goede editor zou je eigenlijk bij het uittypen van de variabele de juiste ervan al voorgeschoteld moeten krijgen.
En nog een puntje: waarom zou je een wachtwoord dubbel in de database willen opslaan?
Plaatjes kan je tussen [img] en [/img] tags plaatsen.
Uiteraard dienen deze wel op internet te staan, je kan je uploaden bij bijvoorbeeld ImgBB
Over je probleem:
Jij doet dit: $_POST['Beschrijving']
Maar waar is je formulier-veld met de name 'beschrijving'?
Daarnaast adviseer ik om uiteraard netjes te escapen, zoals ik al eerder zei.