Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Satunnainen sql-ongelma

keef13 [17.08.2010 09:48:11]

#

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

Blaze [17.08.2010 10:08:33]

#

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.

keef13 [17.08.2010 10:22:55]

#

Nuo arvot kyllä löytyvät tietokannasta ja kysely toimii myös virheellisen vastauksen antaneilla muuttujilla suurimman osan ajasta oikein.

Teuro [17.08.2010 11:14:25]

#

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.

keef13 [17.08.2010 11:32:20]

#

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%')

Teuro [17.08.2010 11:56:51]

#

Ja molemmat tietueet ovat tietysti tietokannassa?

keef13 [17.08.2010 13:27:34]

#

Kiitos vastanneille!

Tietokanta tosiaan sisälsi esim. ylimääräisiä välilyöntejä jotka aiheuttivat virheen, lisäksi lisäsin trimmit joten nyt toimii.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta