array van namen in query plaatsen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Anthony de meulemeester

anthony de meulemeester

03/06/2013 15:26:57
Quote Anchor link
hey,

ik heb volgende query, bedoeling is alle messages te verkrijgen waar de username gelijk is aan een van die namen. hoe krijg ik nu een array in die query?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php $q = mysql_query("SELECT *
                        FROM messages
                        WHERE username = 'een array van namen'"
);

     while($r = mysql_fetch_array($q)) {
            print "de messages"
}
?>
Gewijzigd op 03/06/2013 15:28:11 door Anthony de meulemeester
 
PHP hulp

PHP hulp

22/11/2024 21:45:19
 
- Ariën  -
Beheerder

- Ariën -

03/06/2013 15:35:02
Quote Anchor link
Je kan met WHERE IN een lijst maken van bepaalde gebruikers die je als voorwaarde wilt hebben:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM messages WHERE username IN ('Jantje','Klaasje','Jasmijntje', 'Fleurtje');

maar nu wil je deze uit een PHP-array hebben? In dat geval kan je ze prima met implode() van een array naar een string knallen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$names
= implode("','", $array);
?>


En dan is je query dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_query("SELECT * FROM messages WHERE username IN ('".$names."')");
?>
Gewijzigd op 03/06/2013 15:35:28 door - Ariën -
 
Anthony de meulemeester

anthony de meulemeester

03/06/2013 15:41:08
Quote Anchor link
aha nice thx aar

Toevoeging op 03/06/2013 15:54:50:

blijkbaar wilt em niets returnen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
function getMessages() {
        
   $q1 = query("SELECT following
                FROM followers
                WHERE follower = '"
.userData('username')."'");
        
        $r1 = f_array($q1);
            
           $names = implode("','", $r1);
                
        $q = query("SELECT *
                            FROM messages
                            WHERE username IN ('"
.$names."')");

        if(numrows($q)) {
        
           while($r = mysql_fetch_array($q)) {
                
        print "<p><a href='#'/>".$r['username']. "</a> posted on " .$r['date']."</p>";
        print "<p>".$r['body']."</p>";

            }
            }
else {
                print "no messages found";
            }
    }

?>
 
Erwin H

Erwin H

03/06/2013 16:11:50
Quote Anchor link
Dat kan je veel handiger doen door een join te gebruiken in je query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sql
= "SELECT messages.*
        FROM messages
        LEFT JOIN followers ON messages.username = follower.following
        WHERE follower.follower = '"
.userData('username')."'";
?>

En waart het altijd al een goed idee is om je kolommen uit te schrijven is dat bij queries met joins erin nog meer het geval. Ik gebruik hier nu alleen een * omdat ik niet weet welke kolommen je nodig hebt.
 
Anthony de meulemeester

anthony de meulemeester

03/06/2013 16:24:36
Quote Anchor link
Bedankt Erwin, werkt prima nu.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.