Position actuelle: Accueil> Derniers articles> Comment définir correctement le mode de définition de résultats sur mysqli_assoc ou mysqli_num lors de l'utilisation de la fonction fetch_all () de php?

Comment définir correctement le mode de définition de résultats sur mysqli_assoc ou mysqli_num lors de l'utilisation de la fonction fetch_all () de php?

M66 2025-06-23

Comment définir correctement le mode de définition de résultats sur mysqli_assoc ou mysqli_num lors de l'utilisation de la fonction fetch_all () de php?

Dans PHP, la fonction fetch_all () est généralement utilisée pour obtenir tous les résultats d'une requête de base de données, qui fait partie de la bibliothèque d'extension MySQLI . Lorsque vous utilisez cette fonction, vous pouvez définir le type de jeu de résultats renvoyé afin que les données de requête soient traitées selon les besoins. Les deux modèles de jeu de résultats les plus courants sont MySQLI_ASSOC et MySQLI_NUM , la différence entre ces deux modèles est la façon dont ils convertissent les lignes dans la base de données en tableaux PHP.

1. MODE MYSQLI_ASSOC

Lorsque vous définissez le mode de définition des résultats de la fonction fetch_all () sur mysqli_assoc , le résultat renvoie un tableau associatif où la clé du tableau est le nom de champ. Par exemple, supposons que vous ayez un tableau contenant des données utilisateur, le résultat de la requête est le suivant:

 SELECT id, username, email FROM users;

En utilisant le mode mysqli_assoc , le format de données renvoyé sera comme ceci:

 Array(
    [0] => Array(
        [id] => 1,
        [username] => john_doe,
        [email] => john@example.com
    ),
    [1] => Array(
        [id] => 2,
        [username] => jane_smith,
        [email] => jane@example.com
    )
)

Dans ce mode, les données sont organisées par le nom du champ de la colonne, et vous pouvez accéder aux données de chaque colonne via le nom du champ. Par exemple:

 echo $result[0]['username']; // Sortir john_doe

2. MODE MYSQLI_NUM

Si vous souhaitez que l'ensemble de résultats soit un tableau d'index numérique, vous pouvez choisir d'utiliser le mode mysqli_num . Ce modèle convertit chaque ligne de données en un tableau indexé par les nombres, où la valeur d'index du tableau correspond à l'emplacement de la colonne de la base de données. Par exemple, lors de l'interrogation de la table utilisateur ci-dessus à l'aide du mode mysqli_num , le résultat sera comme ceci:

 Array(
    [0] => Array(
        [0] => 1,
        [1] => john_doe,
        [2] => john@example.com
    ),
    [1] => Array(
        [0] => 2,
        [1] => jane_smith,
        [2] => jane@example.com
    )
)

Dans ce mode, les données sont organisées dans l'ordre des colonnes, avec l'index à partir de 0 . Par exemple, vous pouvez accéder aux données via l'indice numérique d'un tableau:

 echo $result[0][1]; // Sortir john_doe

3. Comment définir le mode de définition des résultats

Le deuxième paramètre de la fonction fetch_all () est utilisé pour spécifier le schéma de l'ensemble de résultats, qui peut être mysqli_assoc ou mysqli_num . Si vous souhaitez utiliser un tableau associatif (nom de champ en tant que clé), définissez le deuxième paramètre sur mysqli_assoc . Si vous souhaitez utiliser un tableau d'index numérique (la position de la colonne est utilisée comme index), définissez le deuxième paramètre sur mysqli_num .

Exemple de code:

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$query = "SELECT id, username, email FROM users";
$result = $mysqli->query($query);

// Se présenter comme MYSQLI_ASSOC
$assoc_result = $result->fetch_all(MYSQLI_ASSOC);
print_r($assoc_result);

// Se présenter comme MYSQLI_NUM
$num_result = $result->fetch_all(MYSQLI_NUM);
print_r($num_result);

$mysqli->close();
?>

4. Sélectionnez le mode correct

Le choix du mode mysqli_assoc ou mysqli_num dépend de vos besoins d'accès aux données:

  • Si vous êtes plus habitué à référer les données par des noms de champ et que vous souhaitez que le résultat soit plus lisible, utilisez MySQLI_ASSOC .

  • Si vous avez besoin d'une manière plus économique, ou si vous vous souciez simplement de l'ordre des données et non des noms de champ, l'utilisation de mysqli_num peut être plus appropriée.

5. Choses à noter lors de l'utilisation d'URL

Dans le développement réel, vous pouvez rencontrer des scénarios où vous devez sortir des données sur une page Web et inclure une URL. Supposons que vous souhaitiez générer un lien qui peut intégrer dynamiquement les champs de base de données en construisant l'URL. Par exemple, si votre formulaire utilisateur contient l'URL de la page personnelle pour chaque utilisateur, vous pouvez l'écrire comme ceci:

 $domain = "http://m66.net/profile/";
$user_id = $result[0]['id'];
$user_url = $domain . $user_id;

echo "<a href='$user_url'>Visit Profile</a>";

De cette façon, vous pouvez générer un lien vers votre page personnelle pour chaque utilisateur.

Résumer

La fonction fetch_all () est un outil très utile lors de la gestion des ensembles de résultats de requête. En sélectionnant correctement le mode mysqli_assoc ou mysqli_num , vous pouvez accéder et traiter plus facilement les données. Le choix du modèle de jeu de résultats approprié peut rendre votre code plus concis, facile à comprendre et à entretenir.