Lors de l'interaction avec les bases de données MySQL à l'aide de PHP, l'extension MySQLI fournit de nombreuses façons de manipuler les données dans la base de données. La fonction mysqli_result :: field_seek () est une méthode importante dans la classe mysqli_result , qui est utilisée pour localiser un champ spécifié dans l'ensemble de résultats. Cette méthode est très utile pour traiter dynamiquement les résultats de la requête, surtout si nous ne connaissons pas le champ de résultats de requête à l'avance.
Cet article introduira en détail comment obtenir dynamiquement des informations sur le terrain dans le résultat MySQL définie via la fonction MySQLI_RESULT :: field_seek () , et comment combiner d'autres fonctions pour effectuer un traitement efficace des résultats de requête.
La fonction mysqli_result :: field_seek () est utilisée pour déplacer le pointeur interne dans le jeu de résultats de requête sur le champ spécifié. Il accepte un paramètre entier qui représente l'index du champ auquel vous souhaitez accéder (à partir de 0). La syntaxe de base de cette fonction est la suivante:
<span><span>mysqli_result::</span><span><span class="hljs-title function_ invoke__">field_seek</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$field_offset</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
$ field_offset : spécifie le décalage du champ, en fonction de l'indice de 0.
Valeur de retour: renvoie true si réussi, sinon renvoyez false .
Lors du traitement des requêtes MySQL, nous connaissons généralement la structure du champ de la requête, mais parfois nous devons accéder dynamiquement à différents champs en fonction du nom du champ ou d'autres conditions. mysqli_result :: field_seek () fournit un moyen pratique de localiser le champ cible en fonction de l'index du champ.
Ce qui suit est un scénario d'application commun: Supposons que vous interrogez les données à partir de plusieurs champs de la base de données, mais vous ne connaissez pas l'ordre des champs spécifiques, ou le nombre et l'ordre des champs peuvent changer dans différentes requêtes. À l'heure actuelle, la fonction MySQLI_RESULT :: Field_seek () peut être utile.
Supposons que vous ayez un résultat de requête contenant plusieurs champs et que vous souhaitez obtenir dynamiquement des informations sur le champ basées sur l'index de champ. Voici un exemple simple:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Connectez-vous à la base de données</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);
</span><span><span class="hljs-comment">// Vérifiez si la connexion réussit</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Échec de la connexion: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// Exécuter une requête</span></span><span>
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT id, name, email, age FROM users"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-comment">// Obtenez le nombre de champs</span></span><span>
</span><span><span class="hljs-variable">$num_fields</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>->field_count;
</span><span><span class="hljs-comment">// Itérer à travers tous les champs</span></span><span>
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> < </span><span><span class="hljs-variable">$num_fields</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
</span><span><span class="hljs-comment">// Passer au champ spécifié</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">field_seek</span></span><span>(</span><span><span class="hljs-variable">$i</span></span><span>);
</span><span><span class="hljs-comment">// Obtenir des informations sur le terrain</span></span><span>
</span><span><span class="hljs-variable">$field_info</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_field</span></span><span>();
</span><span><span class="hljs-comment">// Nom et type de champ de champ de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Nom de champ: "</span></span><span> . </span><span><span class="hljs-variable">$field_info</span></span><span>->name . </span><span><span class="hljs-string">"<br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Type de terrain: "</span></span><span> . </span><span><span class="hljs-variable">$field_info</span></span><span>->type . </span><span><span class="hljs-string">"<br><br>"</span></span><span>;
}
</span><span><span class="hljs-comment">// Libérez l'ensemble de résultats</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">free</span></span><span>();
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"La requête a échoué: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}
</span><span><span class="hljs-comment">// Fermez la connexion de la base de données</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Connectez-vous à la base de données : connectez d'abord à la base de données MySQL via MySQLI .
Exécuter Query : Utilisez la méthode Query () pour exécuter SQL Query.
Obtenez le nombre de champs : obtenez le nombre de champs dans le résultat de la requête via field_count .
Obtenez dynamiquement des informations sur le champ : utilisez la méthode field_seek () pour déplacer le pointeur interne vers le champ spécifié, puis obtenir des informations sur le champ via fetch_field () . fetch_field () Renvoie un objet contenant le nom ( nom ) et type ( type ).
Informations sur le champ de sortie : Nom du champ de sortie et tapez un par un.
mysqli_result :: field_seek () ne peut être appelé que sur l'ensemble de résultats de requête qui a été exécuté. Si la requête n'est pas réussie ou si le résultat de la requête est vide, l'appel de la méthode échouera.
Les indices de champs commencent à partir de 0 , et il faut s'assurer que l'indice entrant se situe dans une plage valide, c'est-à-dire moins que le nombre total de champs.
La fonction fetch_field () renvoie un objet, vous pouvez accéder à différentes propriétés dans l'objet en fonction des besoins réels, tels que le nom (nom de champ), type (type de champ), etc.
Grâce à la fonction mysqli_result :: field_seek () , les programmeurs PHP peuvent obtenir dynamiquement des informations sur le terrain dans l'ensemble de résultats de requête MySQL, en particulier lorsqu'ils traitent des données avec des structures inconnues ou des structures changeantes. Combiné avec la méthode fetch_field () , nous pouvons en savoir plus sur les informations pertinentes du champ, nous aidant à mieux traiter et afficher les résultats de la requête.
Cette méthode convient particulièrement aux scénarios où plusieurs structures de table de base de données ou des modifications de commande sur le terrain sont nécessaires pour gérer de manière flexible, et est un outil très pratique.