Avatar billede flashdevil Nybegynder
05. august 2010 - 16:09 Der er 8 kommentarer

Where in

Hejsa,

Jeg har gang i en select med Where in

Noget ala det her:

$value1 = 2,7,3,5
$value2 = "keld","Bjarne";

SELECT * FROM table WHERE id IN($value1) AND WHERE name IN($value2)

( Der er så en 10-20 Values som der skal sorteres på)

Value variablerne bliver fyldt at data fra en queryString.

Mit problem er nu hvad jeg skal gøre hvis der nu ikke kommer nogen værdi til feks $value2, så den bare bliver tom.

Så vil min søgninger slet ikke retunere noget, og egentlig vil jeg blot have den til at se bort fra den hvis den er tom og så bare selecte på Value1

Måske er det helt generelt en forkert måde at gøre det på.

Warning Mysql Noob :-)

Nogen ideer ?
Avatar billede DonTorro Nybegynder
05. august 2010 - 16:19 #1
noget ala det her måske

$sql = "SELECT * FROM bla WHERE id = '$value1'";

if ($_POST['navn']!="") {
$sql .= "&& navn = '$value2'";
}

Kommer nok til at fylde en del , hvis du har 20, men har ingen ting at teste det med..
Avatar billede DonTorro Nybegynder
05. august 2010 - 16:19 #2
&& skal være AND
Avatar billede w13 Novice
05. august 2010 - 18:18 #3
Skal du så ikke bare bruge "OR"?

$value1 = "2,7,3,5";
$value2 = "'Keld','Bjarne'";

$SQL = "SELECT * FROM table WHERE id IN($value1) OR name IN($value2)";
Avatar billede w13 Novice
05. august 2010 - 18:23 #4
Ellers skal du nok ud i DonTorro's løsning. Men hvis den skal virke, skal der nok testes, om der allerede er indsat noget i "WHERE", inden der skrives "AND". Serveren vil højst sandsynligt brokke sig, hvis den møder: "WHERE AND id IN(...)" :)
Avatar billede DonTorro Nybegynder
15. august 2010 - 10:20 #5
?
Avatar billede flashdevil Nybegynder
05. september 2010 - 12:40 #6
beklager den lange "svartid". Har fået det til at virke nu med DonTorros løsning.

DonTorro, smider du ikke lige et svar.

Mange tak for hjælpen
Avatar billede DonTorro Nybegynder
05. september 2010 - 22:05 #7
glad for jeg kunne hjælpe :)
Avatar billede TommyB Nybegynder
13. september 2010 - 10:01 #8
Jeg forstod ikke problemer...

Du har : SELECT * FROM table WHERE id IN($value1) AND WHERE name IN($value2)

Der er bare et WHERE for meget, det skal være :
SELECT * FROM table WHERE id IN($value1) AND name IN($value2)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester