[PHP & MySQL] Krijg maar 1 record van de 2.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Deviruchi
  • Registratie: December 2006
  • Laatst online: 20-09 21:58
Ik heb in PHP een query:

PHP:
1
2
3
4
5
6
7
<?php
    // If there are user id's registered to this performance, get their names as well.
    if ( !empty( $aUserIds ) ){
        $aUserNames = $oUser->doQuery( "SELECT user_id, name, surname FROM users WHERE user_id IN( '".$aUserIds."' ) ORDER BY surname, name ASC" );
        $aAmountOfUsers = mysql_num_rows( $aUserNames );
    }
?>


Deze haalt dus de user_id, name en surname op, afijn, dit werkt, in de database staat $aUserIds als 1,2 oftewel user_id 1 en 2. Als ik de query in PHPMyAdmin werkt dit ook zoals ik wil.

Vervolgens ga ik dit in een tabelletje neergooien om dit te laten zien.

PHP:
1
2
3
4
5
6
7
8
9
<?php
                        while ( $aUserName = mysql_fetch_array( $aUserNames ) ){
                            echo "<a href=\"index.php?action=modify_user&id=" . $aUserName['user_id'] . "\">". $aUserName['surname'] . " " . $aUserName['name'] . "</a> - <a href=\"index.php?action=modify_performance&user_id=". $aUserName['user_id'] ."\"> Verwijder uit de lijst\n<br>\n";
                        }

                        echo "</td>\n</tr>";

                      }
                      ?>


Allen krijg ik nu alleen de 1e record te zien, ook als er in de database 4 user_id's staan. Ik heb al meerdere variabelen bekeken, maar ze zien er allemaal goed uit, dus het lijkt wel of de while loop gewoon alleen de 1e record pakt, want het resultaat van de query is gewoon goed ( 2 user_id's, namen en achternamen dus ). De user_id's worden opgeslagen als varchar, omdat er soms 5 of 6 komma's inzitten, misschien dat hier een beter alternatief voor is, en misschien is dit zelfs wel het probleem, maar dat weet ik dus niet zeker.

Ik zit er nu al een half uur naar te kijken, maar ik weet dat het vast een hele domme fout is, dus ik hoop dat jullie me kunnen helpen!

Acties:
  • 0 Henk 'm!

Verwijderd

Een WHERE .. IN query is toch van de vorm:

PHP:
1
SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..)


Oftewel bij een lijst met integers:

code:
1
IN (1,2,3,4,5,6)


Ik weet niet hoe jij jouw variabele $aUserIds samenstelt maar ik zie wel dat je het omringt met quotes. Misschien dat MySQL daarop faalt en de eerste waarde pakt? of iets?

Acties:
  • 0 Henk 'm!

  • Deviruchi
  • Registratie: December 2006
  • Laatst online: 20-09 21:58
Verwijderd schreef op vrijdag 30 maart 2007 @ 13:59:
Een WHERE .. IN query is toch van de vorm:

PHP:
1
SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..)


Oftewel bij een lijst met integers:

code:
1
IN (1,2,3,4,5,6)


Ik weet niet hoe jij jouw variabele $aUserIds samenstelt maar ik zie wel dat je het omringt met quotes. Misschien dat MySQL daarop faalt en de eerste waarde pakt? of iets?
Even geprobeerd, maar zonder quotes krijg ik deze fout alsnog.

[EDIT]
Na wat gegoochel erachter gekomen dat ik dus even helemaal uit de quotes moest gaan, het werkt nu naar behoren, hartstikke bedankt!

Ik zei toch dat het een stomme fout was :P

[ Voor 15% gewijzigd door Deviruchi op 30-03-2007 14:05 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Met andere woorden: gewoon even kijken wat de syntax van een query hoort te zijn en vervolgens kijken wat de letterlijke query is die je uitvoert. Aan code heb je niet veel, je moet weten wat je database server ontvangt. ;) Volgende keer dus even iets beter debuggen; zie ook onze FAQ daarover. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.