2013-01-31 18 views
14

Mam sposób, aby uzyskać nazwę kolumny tabeli. Działa dobrze, ale teraz chcę zaktualizować do nowego mysqli? (Próbowałem mysqli_fetch_field, ale nie wiem jak zastosować do tego przypadku i nie jestem pewien, czy jest to opcja Wright).mysql_field_name do nowego mysqli

Jak zrobić to samo z 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; 
+1

Jeśli masz zamiar użyć mysqli, wszystkie funkcje muszą być konwertowane do niego . Nie możesz mieszać mysql i mysqli. – datasage

+0

mysql_field_name jest już starożytnym i bezużytecznym sposobem. Dlaczego tak ich potrzebujesz? –

+1

To jest pytanie: jak przekonwertować wszystko na nowy mysqli – Nrc

Odpowiedz

14

Nie jestem pewien, czy istnieje lepszy sposób to zrobić, ale sprawdziłem, że działa to uzyskać tylko nazwę kolumny i jest nowy mysqli:

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

Dobra odpowiedź ....... Ale zawsze możemy dodać LIMIT 1, aby zaoszczędzić pamięć .. –

2
$sql = "SELECT * from myTable"; 
$res = mysqli_query($con,$sql); 
$row = mysqli_fetch_assoc($res); 
$fields = array_keys($row); 
var_dump($fields); 
+0

Niestety, jestem nowy w php i nie rozumiem twojej odpowiedzi. Jak mogę odebrać tylko tytuł pola, tak jak w przykładzie, który daję. – Nrc

4

można zastąpić funkcję mysql_field_name do mysqli_fetch_field_direct i używać go jak następuje:

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

to jest droga do wdrożyć tę brakującą funkcję:

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

To jest poprawna odpowiedź zgodnie z informacją o odstąpieniu w [dokumentacji] (http://php.net/manual/en/ function.mysql-field-name.php), ale oryginalna funkcja zwróciła Fałsz po niepowodzeniu, a nie null. Nie powinieneś po prostu zrezygnować z operatora trójskładnikowego i wykonać return $ properties-> nazwa; ? – kloddant

+1

Wystarczy zmienić wartość null na false. –

2

Jest to kolejny łatwy sposób drukowania każdego pola nazwę, tabelę, a maksymalna długość

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