Olikos se jotenkin niin, että tuo MySQL ei oletuksena näytä juurikaan käyttäjälle tietoa virheistä? Saako tätä asiaa säätää jostain asetuksesta vai pitääkö siihen koodata joku oma "debug-funktio"?
Ei kerro oletuksena. Perus debuggaus on mysql_query("SELECT foo FROM bar") or die(mysql_error()); mitä ei kylläkään kannata laittaa lopullisille sivuille. Itse olen tehnyt oman tietokanta-luokan, joka logittaa tietokantavirheet tekstitiedostoon.
Useasti tuohon virheenkäsittelyyn ei panosteta juurikaan, mutta itsellä on aina se lähtökohta, että loppukäyttäjälle ei saisi tulostua mitään php:n omia virheilmoituksia. Jos tapahtuu virhe, ilmoitetaan siitä selkeällä Suomen kielellä ja kerrotaan, että virhe on tallennettu ja asia tutkitaan.
Surullisen kuuluisia esimerkkejä on googlen välimuisti tulvillaan, tarvitse hakea kuin Warning: mysql_query ja johan napsahtaa ilmoituksia luokkaa:
Warning: mysql_query(): Access denied for user: 'root@localhost' (Using password: NO) in /xxx/yyy/index.php on line 152
Tuosta ei ole enää kovin vaikea pähkäillä exploittia, varsinkaan sen jälkeen kun mysql on huutanut useamman taulun nimet...
Parhainta käyttäjälle näkyvässä versiossa olisikin virheiden lokitus omaan tietoon ja käyttäjäpuolella:
<?php error_reporting(E_ALL); ini_set("display_errors", 0); // ... ?>
Jolloin miltään lokitusjärjestelmältä ei viedä virheilmoituksia mutta estetään niiden näkyvyys. Monet myös hyljeksii warning- ja notice-tyyppisiä virheitä tyyliin "eihän se oo kuin notice", mutta loppupeleissä nämäkin on virheitä, ei ehkä yhtä kriittisiä mutta säästää paljolta vaivalta heti kun oppii tulkitsemaan oikein ("aa, notice muuttujan $xyz uupumisesta, mutta mä käytän $xyw, korjataan typo...").
Aihe on jo aika vanha, joten et voi enää vastata siihen.