Esimerkki MySql tietokannan luomisesta PHP:lla ja tietokannan lataamisesta CSV:nä

Lataa esimerkkipaketti: php_mysql_csv_example.zip

Minun piti luoda erääseen projektiin yksinkertainen ja helposti käsiteltävä sisäinen tietokanta ja tarjoan tässä valmiin työn esimerkkinä MySql-tietokannan käsittelystä PHP:lla ja HTML-lomakkeilla. PHP ja MySql  ovat kenties yleisimmin käytettyjä työkaluja informaation jäsentämiseen ja käsittelyyn netissä. Työ on sovellettu parin tutorialin pohjalta (tietokantakäsittely + csv tulostus), ja olen koostanut ja kommentoinut valmiin työn paketiksi tiedostoja. Paketti on tarpeettomankin modulaarinen, mutta toivottavasti se tarjoaa rakennuspalikoita johonkin omaan.

Esimerkki on tarkoitettu tutkittavaksi localhost-ympäristössä, joista tarjolla on Mamp (Mac) / Wamp (Win) / Xampp (Linux). PhpMyAdminilla tai vastaavalla työkalulla pitää esimerkkiä varten luoda käyttäjä root salasanalla root (yleensä esiasetettu). Tietokannan käyttäjä, salasana, osoite, tietokannan ja taulun nimi asetetaan tiedostossa dbinfo.inc.php.

Seuraavaksi on selain osoitettava tiedostoon createdatabase.php. Tietokannan luonnin pitäisi onnistua ainakin valmiilla asetuksilla. Mahdollinen ongelma liittyy joko tietokannan osoitteeseen tai käyttäjäkäsittelyyn, joihin apua löytyy kehitysympäristön ohjeista. Onnistuneen luonnin jälkeen voi selaimella avata tiedoston index.php. En käy tiedostoja tämän syvemmin läpi. Tutkimalla niitä toiminnallisuus selvinnee nopeasti. HTML-lomakkeilla tarjotaan syötteet PHP-skripteille, jotka ajavat erilaisia MySql-kyselyjä käyttäen hyväksi annettuja muuttujia. Lisäksi esimerkki sisältää metodin tietokannan datan järjestämiseen klikkailemalla taulukon otsikoita.

Varsinaisen julkaisun suojasin .htaccess tiedoston ja .htpasswd salasanatiedoston avulla, jonka lisäksi .htaccess säännöissä voi yksittäisten tiedostojen lukemisen tai lataamisen estää erikseen. Erityisesti dbinfo.inc.php -tiedosto pitää suojata ulkopuolisilta. Jos tarkoitus on luoda julkisesti hyödynnettävä tietokanta, niin syötteet pitää tarkistaa erikseen erilaisten injektointihyökkäysten varalta. Tällaisenaan kokonaisuus on eri tavoin haavoittuva ja avoin.

Lataa esimerkkipaketti: php_mysql_csv_example.zip

Lähteet: