Afhankelijk van hoe je een database/user hebt aangemaakt met je root-account is het mogelijk nodig om de nieuwe privileges handmatig te verversen (of je MySQL proces te herstarten). Dit doe je met:
FLUSH PRIVILEGES;
Daarnaast zullen er een aantal zaken uitgesloten moeten worden zoals Frank hierboven al aanhaalt, m.a.w. staan database-server en webserver op dezelfde machine zodat je ook inderdaad via localhost kunt connecten. En wanneer deze twee zaken op verschillende machines staan, accepteert de machine waarop je database-server staat en de database-server zelf connecties van de andere bak?
Je root account werkt, zeg je. Heb je al eens geprobeerd die gegevens in te vullen om een connectie te maken? Bij wijze van test, uiteraard. Je wilt niet permanent via een root account verbonden zijn. EDIT: als dit laatste werkt, weet je in ieder geval dat er geen obstructies zijn tussen "code" en "database".
* FLUSH PRIVLEGES zou ervoor kunnen zorgen dat de credentials van je nieuwe user/database actief worden.
* probeer anders een connectie te maken met je root-gegevens bij wijze van test
De WHILE loop van regel 17-22 zou beter binnen de html staan, bijv regel 31.
FROM 'tabel-naam'
Geen qoutes gebruiken om tabel- en kolomnamen. Doe gewoon:
FROM tabelnaam
Tevens valt het mij op dat je hoofdletters gebruikt in je kolomnamen. Niet verboden maar mijn advies is hou het makkelijk voor je zelf en hou tabel- en kolomnamen in uitsluitend kleine letters
- geen eenduidige character encoding in dit alles: kies één character encoding en pas deze overal toe (PHP/HTML/database)
- je stelt geen character encoding in in het document, ook geef je die niet mee in PHP
Gebruik header('Content-type: text/html; charset=UTF-8'); als je UTF-8 gebruikt
of zet een meta-tag in je HTML-document (nog voor je title of andere info)
- je stelt geen character encoding in bij het maken van een connectie met je database
dit is een 'recipe for disaster' als je dit later repareert, maar al een heleboel data (op de verkeerde manier) naar je database hebt weggeschreven
- je escaped output (tekst die je afdrukt) niet met bijvoorbeeld htmlspecialchars() <-- deze functie heeft ook weer een character encoding nodig
dit kan mogelijk tot gevolg hebben dat user-data de HTML-opbouw van je pagina breekt of JavaScript uitvoert omdat die content niet van haar speciale betekenis ontdaan is