phredMedlem sedan nov. 2005314 inlägg Hej har en sql som ser ut som följer:
SELECT aaa, bbb, ccc from tbl_xxx WHERE aaa IN (SELECT aaa FROM tbl_yyy WHERE rrr IN (?))
oCmd.Parameters.AddWithValue("?", qqq);
där qqq är en semikolonseparerad sträng ex. Värde1, Värde2, Värde3
Det fungerar fint om det vara är ett värde i qqq, blir det fler så ballar det ur.
Gör jag helt fel ?
MySQL är dataasen.
hör av er.
Tjabba
Peter SMedlem sedan dec. 20025 483 inlägg IN() vill ha kommaseparerade värden, så testa med att byta alla semikolon mot kommatecken.
phredMedlem sedan nov. 2005314 inlägg oj oj, klantigt värre. det jag menar är såklart kommaseparerad.
Mer info för att komma med någon bra idé.
tbl_sites
siteID INT, AUTOINC, PRIMARY
siteURL varchar
tbl_cat
catID INT, AUTOINC, PRIMARY
siteID INT
siteCat varchar
*************************
SELECT siteID, siteURL from tbl_sites WHERE siteID IN (SELECT siteID FROM tbl_cat WHERE siteCat IN (?)) LIMIT 1
Jag vill alltså hämta en post från tbl_sites där siteID finns i tabellen tbl_cat med någon av de valda kategorierna. I tbl_cat kan alltså ett siteID finnas med flera gånger med olika siteCat.
de valda kategorierna är olika checkboxar som sätts ihop i en ArrayList som sedan konverteras till en kommaseparerad sträng.
LarsGMedlem sedan dec. 200012 464 inlägg Det går inte att använda en parameter i detta fall. Du får expandera ut din lista eller använda en parameter per värde.
phredMedlem sedan nov. 2005314 inlägg Du tappade mig vid hej ;)
Tack för svar, men det där sa mig ingenting faktiskt. Det jag tror att jag förstod är att jag inte kan göra som jag tänkt, rätt ?
LarsGMedlem sedan dec. 200012 464 inlägg Jo.
Det jag menar med att expandera listan är att stoppa in värdena direkt i sql-satsen
q = "SELECT aaa, bbb, ccc from tbl_xxx WHERE aaa IN (SELECT aaa FROM tbl_yyy WHERE rrr IN (" & qqq & ")";
Du måste då hantera eventuella apostrofer kring varje värde om kolumnen rrr kräver det. Du måste också skydda mot sql-injections.
Alternativt kan du göra
q = "... where rrr in (?,?,?,?);
Antalet frågetecken motsvarar antalet värden i din lista och där du sedan hanterar varje värde som en parameter.