WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Mysql - Olika resultat på samma fråga (https://www.wn.se/forum/showthread.php?t=10600)

Patek Philippe 2005-10-30 09:48

Har stött på ett skumt problem. Jag håller på och ändrar ett sökscript och får inte rätt resultat från min selectfråga. När jag ställer samma fråga direkt till databasen får jag de svar jag ska ha.

Så här ser koden ut:

Kod:

$srchSql .= $sortWord;
echo $srchSql;
$rs = new MySQLPagedResultSet($srchSql,20);

På detta får jag en rad tillbaka. Om jag ändrar koden till följande får jag de 29 rader jag ska ha:

Kod:

$srchSql = "Inklistrad fråga från echo $srchSql ovan"
$rs = new MySQLPagedResultSet($srchSql,20);


Hur är detta möjligt? Det är ju exakt samma fråga som skickas till funktionen. Jag har också provat att gå förbi funktionen, men det gör ingen skillnad.

Någon som har råkat ut för detta eller vet vad det kan bero på?

chrizz 2005-10-30 11:06

Använder du mysqls fulltext search eller? Isåfall kan det bero på att ditt fulltext index inte är som det ska. Prova reparera tabellen "REPAIR TABLE asdf", eller helt enkelt droppa indexet och skapa det igen. Jag är osäker om repair table gör något åt indexet, men en drop nollställer garanterat och det byggs upp igen sen.

Patek Philippe 2005-10-30 13:22

Citat:

Originally posted by chrizz@Oct 30 2005, 12:06
Använder du mysqls fulltext search eller? Isåfall kan det bero på att ditt fulltext index inte är som det ska. Prova reparera tabellen REPAIR TABLE asdf, eller helt enkelt droppa indexet och skapa det igen. Jag är osäker om repair table gör något åt indexet, men en drop nollställer garanterat och det byggs upp igen sen.


Nope, inget fulltextindex. Det är en InnoDb tabell.

Gustaf 2005-10-30 13:49

jag förstår inte riktigt koden du skriver. Sänder du strängen

Citat:

$srchSql = "Inklistrad fråga från echo $srchSql ovan"
$rs = new MySQLPagedResultSet($srchSql,20);

eller? vad menar du med "inklistrad fråga"?

Patek Philippe 2005-10-30 14:27

MySQLPagedResultSet är en pagingfunktion, själva anropet till databasen sker där, men problemet ligger inte där, jag har provat att gå förbi den. Det jag menar med inklistrad fråga är att jag i stället för att plocka fram SELECT satsen utiftrån mitt formulär skriver jag in den manuellt. Jag tar då frågan jag får från echot och klistrar in den enligt koden ovan, bara för att kontrollera, det konstiga är att då fungerar det...

Jonas 2005-10-30 15:51

Vill du ha hjälp ordentligt så får du snällt skicka med classen och själva SQL-frågan också.

Tror du vi är synska och skall förstå exakt vad din class gör eller?

Så här mycket förstår jag:

Kod:

$srchSql .= $sortWord;
Okej, han kontaninera han ihop variablarna $srchSql och $sortWord
Kod:

echo $srchSql;
Skriver ut värdet i $srchSql
Kod:

$rs = new MySQLPagedResultSet($srchSql,20);
Kallar klassen MySQLPagedResultSet och tar emot resultatet i $rs

Men vad innehåller då $srchSql och $sortWord ?
Vad gör klassen MySQLPagedResultSet ?


Citat:

Originally posted by Patek Philippe@Oct 30 2005, 15:27
MySQLPagedResultSet är en pagingfunktion, själva anropet till databasen sker där, men problemet ligger inte där, jag har provat att gå förbi den.
Det är ingen funktion. Det är en KLASS.

Patek Philippe 2005-10-30 17:21

Ja, det är klart att det är en klass. Syftade på funktionen med samma namn i klassen. My bad. Klassen är dock rätt ointressant eftersom jag som sagt provat att gå förbi den med samma resultat.

$srchSql innehåller följande: SELECT l.legal_case_id, l.header, l.body, l.publish_date, l.summary, lt.name, lt.legal_case_type_id, la.name, la.legal_area_id FROM legal_case l, legal_case_type lt, legal_area la WHERE l.legal_case_type_id = lt.legal_case_type_id AND l.legal_area_id = la.legal_area_id AND (l.body LIKE '% sökord%' OR l.summary LIKE '% sökord%') ORDER BY l.publish_date DESC

Denna fungerar alltså precis som den ska när jag kör den direkt mot databasen, alternativt klipper in den från echot enligt mitt första exempel.

guran 2005-10-30 17:44

När du skrivar att har provat att gå förbi klassen har du då kört frågan på detta sätt?

$rs = mysql_query($srchSql);

För mig låter det som om det är något som händer i klassen. Prova att stoppa in echo i klassen för att se hur frågan ser ut i klassen precis innan den körs där.

Patek Philippe 2005-10-30 17:51

Citat:

När du skrivar att har provat att gå förbi klassen har du då kört frågan på detta sätt?

$rs = mysql_query($srchSql);

För mig låter det som om det är något som händer i klassen. Prova att stoppa in echo i klassen för att se hur frågan ser ut i klassen precis innan den körs där.

Jajamen, tycker därför att jag kan utesluta att problemet skulle ligga där.

guran 2005-10-30 17:56

Vad avses med 20 i MySQLPagedResultSet($srchSql,20)?


Alla tider är GMT +2. Klockan är nu 13:32.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson