Tietokantakyselyn virheenetsintä

Mureakuha

Loikkaa: valikkoon, hakuun

Monesti saattaa aloittelijoille olla hankala löytää virhettä tietokantakyselystä PHP:llä. Ehkä helpoin tapa löytää virhe on tulostaa kysely näytölle.

$qstr = "SELECT etunimi, sukunimi " . 
            "FROM kayttajat " . 
            "WHERE usename = '" . addslashes($_POST["username"]) . "' " . 
            "AND ID = " . addslashes($_POST["id"]);

Tuosta tutkailemalla ei oikein selviä, onko esimerksi sitä, että saako php -tulkki itselleen jotain kummastakaan muuttujasta syötettä.

$qstr = "SELECT etunimi, sukunimi " . 
            "FROM kayttajat " . 
            "WHERE usename = '" . addslashes($_POST["username"]) . "' " . 
            "AND ID = " . addslashes($_POST["id"]);
echo $qstr . "<br />";

Kun tulostetaan kysely näytölle, tarkkaavainen koodaaja huomaa, mitä se yrittää kysellä tietokannasta. Voimme esimerkiksi huomata, että se yrittää kysellä:

SELECT etunimi, sukunimi FROM kayttajat WHERE usename = 'antti' AND ID =

Jolloin tiedämme, että virhe on siinä, että viimeinen $_POST["id"] muuttujassa ei ole mitään syötettä.

Mikäli käytössäsi on jokin sivutemplate, mihin et voi suoraan tulostaa echo komennolla kyselyä voit käyttää niksinä myös headerien lähetystä, jolloin näet kyselyn suoraan selaimen osoiterivillä. Esim:

header('location: ' . $qstr);
Henkilökohtaiset työkalut