La fonction mysql_fetch_array prend une ligne du jeu de résultats en tant que tableau et renvoie le tableau contenant à la fois l'association et l'index par défaut:
$result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_array($result)) {
print_r($row);
}
Ici $ row est un enregistrement obtenu dans chaque boucle, et le type est un tableau.
Lorsque vous obtenez un enregistrement de MySQL_Fetch_Array , vous utilisez généralement ForEach pour parcourir tous les champs de ces données:
while ($row = mysql_fetch_array($result)) {
foreach ($row as $key => $value) {
echo "$key => $value<br>";
}
}
C'est correct, car $ row lui-même est un tableau.
Notez que mysql_fetch_array renvoie un seul enregistrement et ne peut pas utiliser directement ForEach pour les ressources de résultat de requête:
foreach ($result as $row) {
// Mauvaise utilisation,$resultC'est une ressource,Pas un tableau
}
Cette méthode d'écriture est erronée et mènera à une erreur.
Si vous souhaitez utiliser ForEach pour parcourir tous les enregistrements, la pratique courante consiste à lire tous les résultats dans un tableau d'abord, puis à traverser:
$rows = [];
while ($row = mysql_fetch_array($result)) {
$rows[] = $row;
}
foreach ($rows as $record) {
// Traiter chaque enregistrement
echo $record['username'] . "<br>";
}
De cette façon, vous pouvez facilement gérer tous les enregistrements dans Foreach .
Le tableau renvoyé par mysql_fetch_array par défaut a à la fois des index numériques et des index associés, entraînant une redondance des données. Il est recommandé d'obtenir uniquement des tableaux associatifs:
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
// $rowNe contient que des tableaux associatifs
}
De cette façon, le tableau est plus simple et la traversée FOREAK est plus pratique.
<?php
// Connectez-vous à la base de données
$link = mysql_connect("gitbox.net", "username", "password");
mysql_select_db("testdb", $link);
// Données de requête
$result = mysql_query("SELECT id, username, email FROM users");
// Lisez toutes les données
$rows = [];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$rows[] = $row;
}
// utiliserforeachItérer à travers tous les enregistrements
foreach ($rows as $record) {
echo "utilisateurID: " . $record['id'] . "<br>";
echo "utilisateur名: " . $record['username'] . "<br>";
echo "Mail: " . $record['email'] . "<br><hr>";
}
// Fermer la connexion
mysql_close($link);
?>