2010-03-26 7 views
0

Je veux mon tableau, somthing comme ceci:Faire le nom d'utilisateur et ID utilisateur dans un tableau

array("userid"=>"username","1"=>"ganeshfriends","2"=>"tester") 

mysql requête quelque chose comme ceci:

$query = select username, userid from tbluser 

$result = mysql_query($query); 

while($row = mysql_fetch_array($result)){ 
    $items = array($row['userid']=>$row['username']); 
} 
print_r($items); 

Comment puis-je faire userid comme la clé et le nom d'utilisateur comme val?

+1

Pouvez-vous clarifier ce que vous voulez faire et ce qui ne fonctionne pas? Autant que je puisse voir, vous avez déjà la solution. Aussi, qu'est-ce que le premier tableau a à faire avec le reste? De plus, il n'est pas nécessaire de poser des questions comme ce wiki communautaire. –

+0

Quelle est votre question? Votre code a l'air correct. De plus, votre question est une question normale, pas un wiki de communauté. –

+1

Je pense que le problème est que s'il le fait de la façon dont il est configuré maintenant, s'il y a plusieurs lignes, il perd le tableau précédent à chaque itération, puisqu'il ne pousse pas vers le tableau. – Anthony

Répondre

5

Essayez ceci:

$query = "select username, userid from tbluser"; 

$result = mysql_query($query); 
$items=array(); 
while($row = mysql_fetch_array($result)){ 
    $items[$row['userid']]=$row['username']; 
} 
print_r($items); 

Le problème est que vous supprimez et réattribuer le tableau de résultat ($ items) dans chaque boucle du tout bloc

+0

Je ne comprends pas la question de l'OP - '$ items [clé] = valeur' est identique à' $ items = Array (clé => valeur) 'à l'exception que le premier ajoutera' $ items' s'il est déjà défini, alors que ce dernier fera de '$ items' un nouveau tableau. De plus, vous avez une parenthèse parasite après cette ligne ;-) –

+0

Cela ne devrait-il pas être $ items [$ row ['userid']] = $ row ['nom d'utilisateur']) 'ou est-ce un style de notation que je suis-je pas familier avec? – Anthony

+0

+1 pour le réparer. – Anthony

1

Vous pouvez faire:

$arr = array('userid' => 'username'); 

$result = mysql_query($query); 
if(!$result) die("Query failed"); 

while($row = mysql_fetch_array($result)){ 
    $arr[$row['userid']] = $row['username']; 
} 
3

Puisque tout le monde ne cesse de suggérer la même chose, je me dis que je peux aussi bien me joindre.

Quand je suis ai une situation avec des clés de valeurs sql, j'aime les mettre aux variables d'abord il est donc plus agréable à la recherche:

$query = "select username, userid from tbluser"; 

$result = mysql_query($query); 

while($row = mysql_fetch_array($result)){ 
    $userid = $row['userid']; 
    $username = $row['username'] 
    $items[$userid] = $username; 
} 
print_r($items); 

Il peut ajouter deux lignes, mais il est sûr plus facile sur les yeux et évite les supports entre parenthèses.

0

Utilisez d'autres variables, comme Anthony, je veux juste dire, ne me souviens pas stripslashes (je pense que vous avez fait mysql_real_escape_string() en les écrivant tha base de données)


while($row = mysql_fetch_array($result)){ 
    $userid = $row['userid']; 
    $username = stripslashes($row['username']); 
    $items[$userid] = $username; 
} 
+0

mysql_real_escape_string() échappe des valeurs dans le contexte d'une requête, il ne laisse pas de barres obliques dans la base de données. Une requête de valeurs de base de données retournera la valeur * sans * barres obliques. Faire des stripslashes() à ce point enlèvera juste les slashes légitimes, à la place. – pinkgothic

+0

quand il écrit "username" dans la base de données, (en utilisant mysql_query ("insert into ...")), il doit utiliser mysql_real_escape_string, pour des raisons de sécurité. faire une requête sécurisée. alors il doit utiliser des stripslashes ... – Simon

0

puisque vous êtes seulement en utilisant l'accès associatif, je propose l'utilisation de mysql_fetch_assoc() au lieu de mysql_fetch_array()

puisque vous n'arg pas que vous voulez un tableau associatif rendu par mysql_fetch_array() il crée 2 tableaux, une avec int-indexes et un avec string-indexes (assoc [iative]), même si ce script court n'utilise pas beaucoup de mémoire et pourrait avoir une grande vitesse, vous devriez toujours vous rappeler le performance.

Questions connexes