Mistähän voisi johtua että alla oleva kysely tuottaa noin joka 20. kerta vastaukseksi virheellisesti nolla riviä vaikka sen pitäisi palauttaa yksi rivi. Suurimman osan aikaa kysely toimii oikein.
<?php $database = new mysqli('localhost', 'root', '***', 'DB'); if (mysqli_connect_errno()) { echo '<h1>Tietokantavirhe</h1>'; echo '<p>Yhteyden luominen tietokantaan epäonnistui.</p>'; echo '<p>Virhe: '.mysqli_connect_error().'</p>'; exit(); } $database->set_charset("utf8"); $query_osoite = "select * from content where address like ('%$katuosoite%') and city like ('%$kaupunki%') and companyName like ('%$nimi%')"; $rs = $database->query($query_osoite); if($rs->num_rows===0){ .... }else{ ....... }
Mod. lisäsi kooditagit
Mitkäs arvot näillä muuttujilla $katuosoite, $kaupunki ja $nimi on? Oon kohtalaisen varma, että asettamalla $katuosoite = 'Tekopolku 13'; $kaupunki = 'Perähikiä'; $nimi = 'Mänttilän rautapaja'; ei löydy yhtään tulosta.
Nuo arvot kyllä löytyvät tietokannasta ja kysely toimii myös virheellisen vastauksen antaneilla muuttujilla suurimman osan ajasta oikein.
Laitapa echo $query_osoite; ja sen jälkeen pastea kyseinen rivi tänne. Tietokoneethan eivät tee satunnaisesti mitään väärin, eli siis ajamalla jokin syöte tietokantaan on vastaus aina samanlainen, jos tietokannan sisältö ei muutu.
Tässä oikean vastauksen antanut kysely:
select * from content where address like ('%Morvantie 189%') and city like ('%Jämsä%') and companyName like ('%Majatalo Morva%')
Tässä väärän vastauksen antanut kysely:
select * from content where address like ('%Rantokuja 87%') and city like ('%Muhos%') and companyName like ('%Maatilamajoitus ja Hotelli%')
Ja molemmat tietueet ovat tietysti tietokannassa?
Kiitos vastanneille!
Tietokanta tosiaan sisälsi esim. ylimääräisiä välilyöntejä jotka aiheuttivat virheen, lisäksi lisäsin trimmit joten nyt toimii.
Aihe on jo aika vanha, joten et voi enää vastata siihen.