2010-01-09 7 views
2

PLATEFORME:PHP - Attribution des valeurs dans une boucle while et les accès individuellement en dehors de la boucle

PHP, mySQL

Ce que je:

J'ai une table de base de données. Dans mon application, je suis capable d'aller chercher toutes les lignes. Lorsque j'interroge la base de données, j'ai défini la limite de récupération des enregistrements de façon dynamique.

CE QUE J'essaie de faire:

Je suis en train de tirer toutes les lignes de données jusqu'à ce que la limite est atteinte enregistrement chercher, dans une boucle. Je veux assigner ces résultats à un autre tableau (dans la boucle) afin que je puisse accéder à ces valeurs via ce nouveau tableau, en dehors de la boucle. J'ai besoin du code PHP pour le faire. Je veux pouvoir appliquer la même logique de codage en Javascript. Est-ce que ce sera possible?

Exemple:

//TABLE STRUCTURE 
fname lname city 
Ed  Al  SA 
Bob  B  MN 
Chris  V  KJ 

PHP QUERY:

$result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3"); 

while($row = mysql_fetch_array($result)) {  

     $new_rows_data['fname'] .= $row['fname']; 
     $new_rows_data['lname'] .= $row['lname']; 
     $new_rows_data['city'] .= $row['city']; 
    } 

SORTIE DESIRE:

echo $new_rows_data['fname'][0].' '.$new_rows_data['lname'][0].' '.$new_rows_data['city'][0]. 
//Want the above to show: Ed  Al  SA 
echo $new_rows_data['fname'][1].' '.$new_rows_data['lname'][1].' '.$new_rows_data['city'][1]. 
//Want the above to show: Bob  B  MN 
echo $new_rows_data['fname'][2].' '.$new_rows_data['lname'][2].' '.$new_rows_data['city'][2]. 
//Want the above to show: Chris  V  KJ 

Merci à adv ance.

Répondre

3

Si vous modifiez les bits de requête PHP ...

$new_rows_data['fname'][] = $row['fname']; 
$new_rows_data['lname'][] = $row['lname']; 
$new_rows_data['city'][] = $row['city']; 

... vous devriez être bon d'aller. (Pour le moment, vous ajoutez le contenu dans une seule chaîne à chaque fois.)

Incidemment, je présume que ces données sont 'connues', car vous ne semblez pas pouvoir les échapper du tout. (Cross site scripting est mauvais, etc.)

+0

Merci pour la réponse. Des idées sur comment puis-je implémenter la même chose dans jQuery en utilisant la fonction $ .each? – Devner

+0

@middaparka Merci pour l'alerte de sécurité. Comme je récupère les données directement à partir de la base de données, dois-je encore y échapper. Si oui, pourriez-vous me dire comment? Merci beaucoup! – Devner

+0

En règle générale, utilisez mysql_real_escape_string lors de la mise des données dans la base de données et htmlentities lors de la sortie. Cela dit, il s'agit d'un sujet profond - voir http://stackoverflow.com/questions/71328/what-are-the-best-practices-for-avoid-xss-attacks-in-a-php-site –

3

Bien que middaparka's réponse est juste, assurez-vous d'abord déclarer les nouveaux tableaux individuels avant d'entrer dans la boucle while:

$result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3"); 

$new_rows_data['fname'] = array(); 
$new_rows_data['lname'] = array(); 
$new_rows_data['city'] = array(); 
while($row = mysql_fetch_array($result)) { 
    // the following (two brackets []), automatically pushes a value on the end of the array 
    $new_rows_data['fname'][] = $row['fname']; 
    $new_rows_data['lname'][] = $row['lname']; 
    $new_rows_data['city'][] = $row['city'] 
} 
+0

+1 Il dit la vérité. Alors que PHP vous permet de faire une 'initialisation paresseuse', définir les choses avant l'utilisation est une bonne pratique. –

+0

+1 pour avoir mentionné les meilleures pratiques. – Devner

Questions connexes