04. august 2003 - 23:22
Der er
31 kommentarer og 1 løsning
kald med where
Jeg har følgende kald til en database : $sql = "SELECT * FROM indsaet_post WHERE id = '$row[id]'"; det der gør det problematisk, er at $row[id] kan indeholde flere værdier. Normalt har man kun en værdi stående efter WHERE. Hvordan gør man det ???
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
04. august 2003 - 23:23
#1
tjaah, hvad kan $row[id] da indeholde?
04. august 2003 - 23:28
#2
den indeholder værdierne for id
04. august 2003 - 23:32
#3
Hvordan kan det fx se ud ?
04. august 2003 - 23:36
#4
lad os nu tage et eks. og sige at jeg vil søge WHERE id=$row[0]=20 og id=$row[1]=70, hvad skriver man så
04. august 2003 - 23:39
#5
kan du bruge IN på en eller anden måde ?: WHERE id IN ('1','2','3','4','5','6')
04. august 2003 - 23:40
#6
id bliver først kaldet fra en anden tabel : $sql = "SELECT id FROM tilmi WHERE userid = '$userid'"; $query = mysql_query($sql) or die(mysql_error() . '<br>' . $sql); while ($row = mysql_fetch_array($query)) { echo $row[id]; } og der kan således være flere forekomster.. Bagefter vil jeg så finde de poster i en anden tabel der har de netop kaldte id værdier ..
04. august 2003 - 23:54
#7
$sql = "SELECT id FROM tilmi WHERE userid = '$userid'"; $query = mysql_query($sql) or die(mysql_error() . '<br>' . $sql); $list = array(): while ($row = mysql_fetch_array($query)) { $list[]=$row[id]; } $sql = "select ..... where id in (". join(",",$list) .")" ...osv
04. august 2003 - 23:58
#8
prøver lige om jeg kan få det til at fungere
04. august 2003 - 23:59
#9
....men reelt har du nok brug for en join select * from indsaet_post,tilmi where tilmi.id=indsaet_post.id and tilmi.userid='$userid'
05. august 2003 - 00:07
#10
har nu skrevet følgende : $sql = "SELECT id FROM tilmi WHERE userid = '$userid'"; $query = mysql_query($sql) or die(mysql_error() . '<br>' . $sql); $list = array(); while ($row = mysql_fetch_array($query)) { $list[]=$row[id]; } $sql = "select * FROM indsaet_post where id in (". join(",",$list) .")"; $query = mysql_query($sql) or die(mysql_error() . '<br>' . $sql); $row = mysql_fetch_array($query); while ($row = mysql_fetch_array($query)) { echo "$row[kategori]"; } exit; men den udskriver ikke noget ???
05. august 2003 - 00:09
#11
Prøv at udskrive dine sqlsætninger og se hvad der står i dem.
05. august 2003 - 00:14
#12
har udskrevet $sql = "select * FROM indsaet_post where id in (". join(",",$list) .")"; echo "$sql"; og den skriver 75 som er værdien af id
05. august 2003 - 00:16
#13
eller rettere, den skriver select * FROM indsaet_post where id in (75)
05. august 2003 - 00:20
#14
og ved den første sql skriver den : SELECT id FROM tilmi WHERE userid = 'michael'
05. august 2003 - 00:20
#15
Er der så et sted hvor id=75 ?
05. august 2003 - 00:21
#16
så id og userid er rigtige nok.. men den skriver bare ikke posten fra indsaet_post ud ??
05. august 2003 - 00:21
#17
ja der er et sted hvor id =75
05. august 2003 - 00:25
#18
Du springer jo også en række over, når du kigger i indsaet_post ;))
05. august 2003 - 00:26
#19
hvordan det ??
05. august 2003 - 00:26
#20
$row = mysql_fetch_array($query);
05. august 2003 - 00:28
#21
er ikke lige helt med..
05. august 2003 - 00:30
#22
erik kan du ikke præcisere det ??
05. august 2003 - 00:31
#23
Det kan ikke præciseres mere end det allerede er gjort. Men overvej den join. Det er den rigtige måde at gøre det på.
05. august 2003 - 00:32
#24
forstår ikke hvad du mener med at jeg springer en række over
05. august 2003 - 00:42
#25
når jeg bruger den join skriver den : Unknown table 'tilmi' in where clause select * FROM indsaet_post where tilmi.id=indsaet_post.id and tilmi.userid='michael'
05. august 2003 - 00:43
#26
er du stået af erik ..
05. august 2003 - 00:51
#27
kunne du ikke have sagt at jeg bare skulle slette $row = mysql_fetch_array($query); :)
05. august 2003 - 01:00
#28
læg et svar erik og du får pointsne. det er også fint at man ikke får det hele serveret :)
05. august 2003 - 08:23
#29
Nu skal du skrive join-sætningen som jeg skriver den. Jeg behøver ikke points.
05. august 2003 - 10:08
#30
det virker som det er nu, så vel ikke nødvendigt med en join ?
05. august 2003 - 10:18
#31
Som udgangspunkt er det bedst at lade databasen gøre arbejdet, og det gør den med en join.
22. december 2004 - 10:26
#32
okay
Computerworld tilbyder specialiserede kurser i database-management