Permalänk
Medlem

Fråga ang. PDO

Tjenare,

Jag kör en databasfråga med en parameter via PDO prepared statements. Parametern är id-nummret i databasen.

Just nu har jag 10 rader i min tabell, med id från 1-10, när jag feltestade skrev jag &id=2345, och den returnerade då id: 2. Jag antar att det är för att den hittar den närmaste matchningen, alltså finns 234? nej. 23? nej. 2? ja och returnerar den. Kan man undvika detta på något sätt?

MVH Simon Malm

Permalänk
Medlem
Skrivet av simowewe:

Tjenare,

Jag kör en databasfråga med en parameter via PDO prepared statements. Parametern är id-nummret i databasen.

Just nu har jag 10 rader i min tabell, med id från 1-10, när jag feltestade skrev jag &id=2345, och den returnerade då id: 2. Jag antar att det är för att den hittar den närmaste matchningen, alltså finns 234? nej. 23? nej. 2? ja och returnerar den. Kan man undvika detta på något sätt?

MVH Simon Malm

Det låter ju knäppt. Blir det en LIKE '%n%'-match måntro? Posta gärna lite kod.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Detta är kodstycket, om man som användare efterfrågar 99 så returnerar den samma som om man efterfrågar 9.

http://pastebin.com/JRhpupND

Permalänk
Hedersmedlem
Skrivet av simowewe:

Tjenare,

Jag kör en databasfråga med en parameter via PDO prepared statements. Parametern är id-nummret i databasen.

Just nu har jag 10 rader i min tabell, med id från 1-10, när jag feltestade skrev jag &id=2345, och den returnerade då id: 2. Jag antar att det är för att den hittar den närmaste matchningen, alltså finns 234? nej. 23? nej. 2? ja och returnerar den. Kan man undvika detta på något sätt?

MVH Simon Malm

Visa kod, kod, kod!

Prepared statements påverkar inget av detta slaget, så det måste vara något annat som är vajsing. Visa SQL-frågan och hur du hanterar inparametrar.

EDIT: Koden kom medans jag skrev.

EDIT2: Är du säker på att `$id` har värdet `2345` när det används i queryn? En snabb första felsökning i liknande fall kan vara:

  1. Skriv ut `$id` precis innan din query och se vad variabeln har för värde.

  2. Testa den query du tror du får direkt mot MySQL och se svaret.

Detta bör kunna pinpointa om felet har med indata, databasen, eller annan syntax att göra.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Har efter lite felsök hittat felet, gjorde som du skrev och echo $id, det visade sig vara följande.

Jag skickar parametrar som string via denna struktur i QUERY_STRING, Hemsidan/modul/controller/action/parameter1/par2 osv... Sedan blir $p som skickas till action = par1/par2, och jag ville använda 1an och glömde explode() vilket gav $p[0] = första tecknet.....

Tråd kan låsas, tack för hjälpen!

Permalänk
Hedersmedlem
Skrivet av simowewe:

Har efter lite felsök hittat felet, gjorde som du skrev och echo $id, det visade sig vara följande.

Jag skickar parametrar som string via denna struktur i QUERY_STRING, Hemsidan/modul/controller/action/parameter1/par2 osv... Sedan blir $p som skickas till action = par1/par2, och jag ville använda 1an och glömde explode() vilket gav $p[0] = första tecknet.....

Tråd kan låsas, tack för hjälpen!

Trådar låser vi om de spårar ur, inte för att de är lösta . Om det inte finns mer att säga i tråden så kommer den naturligen falla genom systemet, ingen skada skedd.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.