Gå til innhold

PDO statement og "..WHERE IN (?)"


Anbefalte innlegg

Har et prepared PDO statement opprettet som følger:

 

$stmt = $db->prepare('SELECT * FROM tbl WHERE id IN (?)');

Jeg ønsker å binde en vilkårlig lang kommaseparert liste med heltall til parameteren, men har sålangt ikke funnet ut hvordan det gjøres. Følgende fungerer (naturligvis) ikke:

 

$stmt->bindValue(1, array(1,2,3));
$stmt->bindValue(1, '1,2,3');

Den første fordi bindValue ikke støtter arrays, og nummer to fordi parametern da blir en streng.

Finnes det en elegant måte å gjøre dette på? Iflg. forumtrådene jeg har kommet over, så er det ikke mulig, og manualen er litt unnvikende på dette området. Tips?

 

En omtrentlig tilsvarende problemstilling oppstår ved "..ORDER BY ?".

Lenke til kommentar
Videoannonse
Annonse
Har et prepared PDO statement opprettet som følger:

 

$stmt = $db->prepare('SELECT * FROM tbl WHERE id IN (?)');

Jeg ønsker å binde en vilkårlig lang kommaseparert liste med heltall til parameteren, men har sålangt ikke funnet ut hvordan det gjøres. Følgende fungerer (naturligvis) ikke:

 

$stmt->bindValue(1, array(1,2,3));
$stmt->bindValue(1, '1,2,3');

Den første fordi bindValue ikke støtter arrays, og nummer to fordi parametern da blir en streng.

Finnes det en elegant måte å gjøre dette på? Iflg. forumtrådene jeg har kommet over, så er det ikke mulig, og manualen er litt unnvikende på dette området. Tips?

 

En omtrentlig tilsvarende problemstilling oppstår ved "..ORDER BY ?".

 

Hadde samme problem, endte med at jeg måtte gjøre følgende

foreach($categorys as $category){ 
$in .= $category.',';
} //så etter slette siste tegn etter jeg har loppa igjennom.

med ORDER BY måtte jeg, ja gjøre det jalla og si at $this->db->prepare('SELECT * FROM product WHERE product_category = ? ORDER BY '.$sorting.' '.$sort);

 

Muligens til lite hjelp, men søkte selv etter samme og fant nada.

 

UPDATE: nvm klarte og overse at du prøvde med string i PDO, min løsning fungere med mysqli. Beklager

Endret av TheGreatOne
Lenke til kommentar

Takker for svar. Jeg er klar over at jeg kan gjøre det ved å manipulere SQL-strengen før jeg kjører prepare(), problemet er at jeg ikke vet parameterenes verdier (eller i dette tilfellet, antall parametre) på det tidspunktet :-)

Endret av Edorph
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...