Sebastian: MySQL - Meta-Informationen aus Ressource holen

Hallo Forum,

ich wundere mich gerade darüber wie PHP-Funktionen Feldinformationen aus MySQL-Ressourcen fischen können, die sich für einen "Nutzer" als Funktion so ohne weiteres nicht nachbauen lassen.

Mal als Beispiel: mysql_field_flags() - Wie kommt PHP an diese Feld-Information? Werden sie beim ursprünglichen Query à la: 'SELECT field FROM table LIMIT 1;' übermittelt oder startet die Funktion einfach einen neuen Query im Sinne von SHOW COLUMNS und gibt diese entsprechend aus?

Wenn es möglich ist solche Informationen auszulesen würde mich folgendes interessieren:

Kann man mit PHP aus einer Ressource die Tabelle auslesen, die Ursprung der Ressource ist?
Also zum Beispiel aus:

$result = mysql_query('SHOW COLUMNS FROM table;');

function my_func($result)
{
...
return $tabelle;
}

eben wieder die Tabelle ausgeben? Ich weiß, dass ich der Funktion den Tabellennamen auch direkt mitteilen könnte. Aber um eine Funktion komfortabler zu halten fände ich die Idee interessant.

Danke für eine Erklärung.

  1. echo $begrüßung;

    ich wundere mich gerade darüber wie PHP-Funktionen Feldinformationen aus MySQL-Ressourcen fischen können, die sich für einen "Nutzer" als Funktion so ohne weiteres nicht nachbauen lassen.

    Die MySQL-API stellt diese Funktionalität zur Verfügung. Die Feldinformation muss nicht aus real existierenden Feldern kommen, denn in einer Datenbankabfrage können auch berechnete Informationen zurückgegeben werden. Auch für diese Spalten mit berechneten Werten gibt es eine "Feldinformation".

    Mal als Beispiel: mysql_field_flags() - Wie kommt PHP an diese Feld-Information? Werden sie beim ursprünglichen Query à la: 'SELECT field FROM table LIMIT 1;' übermittelt oder startet die Funktion einfach einen neuen Query im Sinne von SHOW COLUMNS und gibt diese entsprechend aus?

    Die Flags gibt es über die MySQL-API-Funktion mysql_fetch_field(). SHOW COLUMNSgeht nicht, bedenke die berechneten Spalten.

    Kann man mit PHP aus einer Ressource die Tabelle auslesen, die Ursprung der Ressource ist?

    Nein, denn die Quelle kann eine oder mehrere oder auch gar keine Tabelle sein.
    Beispiele:

    SELECT ... FROM foo JOIN bar ON ...
      SELECT 42
      SELECT LAST_INSERT_ID()

    echo "$verabschiedung $name";

    1. Danke für die Antwort. Wieder ein Stück klüger.