Position actuelle: Accueil> Derniers articles> Comment obtenir les métadonnées d'un champ de base de données via la fonction mysqli :: stmt_init?

Comment obtenir les métadonnées d'un champ de base de données via la fonction mysqli :: stmt_init?

M66 2025-07-18

En PHP, lorsque nous utilisons des extensions pour faire fonctionner la base de données, nous avons parfois besoin non seulement d'obtenir le résultat de la requête lui-même, mais aussi de comprendre les détails des champs retournés de la requête, tels que le nom du champ, le type, la longueur, etc. Cette information s'appelle les métadonnées du champ.

Cet article utilisera un exemple spécifique pour expliquer comment utiliser MySQLI :: STMT_INIT pour combiner des méthodes PREEPLA () et result_metadata () pour obtenir les métadonnées des champs de base de données.

Étape 1: établir une connexion de base de données

Tout d'abord, nous devons nous connecter à la base de données à l'aide de la classe MySQLI .

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

if ($mysqli->connect_errno) {
    die('Échec de la connexion: ' . $mysqli->connect_error);
}
?>

Étape 2: Initialiser et préparer les instructions SQL

Ensuite, nous utilisons STMT_INIT () pour initialiser un objet mysqli_stmt et préparer une instruction de requête SQL à l'aide de la méthode PREPEPLA () .

 <?php
$stmt = $mysqli->stmt_init();

if (!$stmt->prepare('SELECT id, name, email FROM users WHERE status = ?')) {
    die('Le prétraitement a échoué: ' . $stmt->error);
}
?>

Étape 3: liez les paramètres et exécutez la requête

Supposons que nous voulons interroger l'utilisateur avec status = 'actif' :

 <?php
$status = 'active';
$stmt->bind_param('s', $status);

if (!$stmt->execute()) {
    die('L&#39;exécution a échoué: ' . $stmt->error);
}
?>

Étape 4: Obtenez et affichez les métadonnées

Maintenant, le point est ici - nous appelons la méthode result_metadata () pour obtenir les métadonnées de champ du résultat de la requête.

 <?php
$metadata = $stmt->result_metadata();

if ($metadata) {
    while ($field = $metadata->fetch_field()) {
        echo "Nom de champ: " . $field->name . "<br>";
        echo "Type de terrain: " . $field->type . "<br>";
        echo "Longueur maximale: " . $field->max_length . "<br>";
        echo "<hr>";
    }
    $metadata->free();
} else {
    echo "Pas de métadonnées disponibles。";
}
?>

Ici, fetch_field () renverra un objet contenant les détails du champ, et les attributs communs incluent:

  • Nom → Nom du champ

  • Type → Type de champ (code numérique, besoin de comparer le manuel)

  • Max_length → Longueur maximale du champ (Remarque: uniquement efficace pour les ensembles de résultats)

Étape 5: Libérer les ressources et fermer la connexion

Enfin, n'oubliez pas de publier des instructions et de fermer la connexion de la base de données:

 <?php
$stmt->close();
$mysqli->close();
?>

Échantillon de sortie

En supposant que la requête renvoie trois champs ID , nom et e-mail , la sortie peut être la suivante:

 Nom de champ: id
Type de terrain: 3
Longueur maximale: 0
-----------------------
Nom de champ: name
Type de terrain: 253
Longueur maximale: 0
-----------------------
Nom de champ: email
Type de terrain: 253
Longueur maximale: 0

Notez que la valeur numérique du type de champ doit se référer aux constantes de type dans le manuel MySQL, telles que 3 représente MySQL_TYPE_LONG et 253 représente MySQL_TYPE_VAR_STRING .

résumé