web-dev-qa-db-fra.com

mysql_field_name vers le nouveau mysqli

J'ai un moyen d'obtenir le nom des colonnes d'une table. Cela fonctionne bien, mais maintenant je veux mettre à jour le nouveau mysqli? (J'ai essayé le mysqli_fetch_field mais je ne sais pas comment l'appliquer à ce cas et je ne sais pas si c'est l'option wright)

Comment faire de même avec mysqli? :

$sql = "SELECT * from myTable";
$result = mysql_query($sql,$con);
$id = mysql_field_name($result, 0);
$a = mysql_field_name($result, 1);

echo $id;
echo $a;
19
Nrc

Je ne sais pas s'il existe une meilleure façon de le faire, mais j'ai vérifié que cela fonctionne pour obtenir uniquement le nom des colonnes et qu'il s'agit du nouveau mysqli:

$result = mysqli_query($con, 'SELECT * FROM myTable');
while ($property = mysqli_fetch_field($result)) {
    echo $property->name;
}
16
Nrc

C'est la façon d'implémenter cette fonction manquante:

function mysqli_field_name($result, $field_offset)
{
    $properties = mysqli_fetch_field_direct($result, $field_offset);
    return is_object($properties) ? $properties->name : null;
}
32
José Carlos PHP

Vous pouvez remplacer la fonction mysql_field_name à mysqli_fetch_field_directet utilisez-le comme suit:

$colObj = mysqli_fetch_field_direct($result,$i);                            
$col = $colObj->name;
echo "<br/>Coluna: ".$col;
6
user3187518

Il s'agit d'un autre moyen simple d'imprimer le nom, la table et la longueur maximale de chaque champ

$sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname";

if ($result=mysqli_query($con,$sql))
{
   // Get field information for all fields
   while ($fieldinfo=mysqli_fetch_field($result))
   {
      printf("Name: %s\n",$fieldinfo->name);
      printf("Table: %s\n",$fieldinfo->table);
      printf("max. Len: %d\n",$fieldinfo->max_length);
   }
   // Free result set
   mysqli_free_result($result);
}
2
A.A Noman
$sql = "SELECT * from myTable";
$res = mysqli_query($con,$sql);
$row = mysqli_fetch_assoc($res);
$fields = array_keys($row);
var_dump($fields);
1
Your Common Sense