mysql_field_name для нового mysqli

У меня есть способ получить имя столбцов таблицы. Он отлично работает, но теперь я хочу обновиться до нового mysqli? (Я пробовал mysqli_fetch_field, но я не знаю, как подать заявку на это дело, и я не уверен, что это вариант с правами)

Как сделать то же самое с 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; 

Это способ реализовать эту недостающую функцию:

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

Я не уверен, есть ли лучший способ сделать это, но я проверил, что это работает, чтобы получить только имя столбцов и является новым mysqli:

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

Вы можете заменить функцию mysql_field_name на mysqli_fetch_field_direct и использовать ее следующим образом:

 $colObj = mysqli_fetch_field_direct($result,$i); $col = $colObj->name; echo "<br/>Coluna: ".$col; 
 $sql = "SELECT * from myTable"; $res = mysqli_query($con,$sql); $row = mysqli_fetch_assoc($res); $fields = array_keys($row); var_dump($fields); 

Это еще один простой способ распечатать имя, таблицу и максимальную длину каждого поля

 $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); }