Tag Archive: PHP


Wer mit PHP Daten in eine Datenbank bzw. in eine Tabelle schreiben möchte, der kennt normalerweise auch die Struktur der Tabelle. In einigen Fällen braucht man aber vielleicht trotzdem zur Laufzeit genauere Informationen zu den Feldern.

Hier können die folgenden PHP-Funktionen hilfreich sein:

string mysql_field_type(resource $result , int $field_offset) (Achtung: deprecated)
string mysql_field_name(resource $result , int $field_offset) (Achtung: deprecated)
int mysql_field_len(resource $result , int $field_offset) (Achtung: deprecated)

Achtung! Alle diese Funktionen sind, wie die ganze PHP-MySQL-API veraltet. Der Einsatz ist also nur dort sinnvoll, wo ohnehin noch mit der alten MySQL-Extension gearbeitet wird. Generell sollte in Zukunft eher auf mysqli oder PDO_MYSQL gesetzt werden.

Dennoch soll ein kleines Beispiel zeigen, wie die Funktionen genutzt werden können, um Detailinformationen zu den verwendeten Feldern zu erhalten.
————————————



————————————
Ausgabe:

Feldanzahl: 3
Feldname : diameter (int:11)
Feldname : pizza (string:20)
Feldname : veggie (string:3)

Bei der Übergabe von Daten eines Eingabeformulares an ein PHP-Skript legt man sich im Normalfall auf eine Art (GET / POST) der Datenübergabe fest. Werden die Daten von dem Formular nach der GET Spezifikation (Übergabe im URL) übergeben, so nutzt man beim Empfängerscript in PHP für gewöhnlich die Schreibweise $_GET['parameter'] für den Zugriff auf die Daten. Bei Übergabe per POST wird der Wert entsprechend mit $_POST['parameter'] ermittelt.
Wenn nicht klar ist, welche Art der Parameterübergabe vom Aufrufer benutzt wird – oder wenn (aus welchen Gründen auch immer) beide Methoden berücksichtigt werden müssen, dann kann die Abfrage über $_REQUEST['parametername'] eine Alternative sein. Bei der Nutzung von $_REQUEST ist es egal, über welche Methode der Wert übergeben wurde.

Beispiel:

Man nehme folgendes Formular als HTML/PHP Eingabeseite:

<html>
<title>Test $_REQUEST</title>
<head></head><body>
<form action="test_request.php" method="get">
Eingabe <input type = "text" name="fancy_param" value="">
<input type = "submit" value="go">
</form></body>
</html>

und die PHP-Datei test_request.php

<?PHP
echo "Übergebener Wert (REQUEST): ".$_REQUEST['fancy_param']."<br />";
echo "Übergebener Wert (GET)    :".$_GET['fancy_param']."<br />";
echo "Übergebener Wert (POST)   : ".$_POST['fancy_param']."<br />";
echo "--------------------------<br />";
echo "Manipulation von \$_GET...<br />";
$_GET['fancy_param']="0987654321";
echo "Übergebener Wert (REQUEST): ".$_REQUEST['fancy_param']."<br />";
echo "<del>Übergebener</del> Wert (GET): ".$_GET['fancy_param']."<br />";
echo "Übergebener Wert (POST): ".$_POST['fancy_param']."<br />";
?>

Bei Eingabe von „12345“ im Eingabefeld erhalten wir folgende Ausgabe:

Übergebener Wert (REQUEST): 12345
Übergebener Wert (GET) :12345
Übergebener Wert (POST) :
————————–
Manipulation von $_GET…
Übergebener Wert (REQUEST): 12345
Übergebener Wert (GET): 0987654321
Übergebener Wert (POST):

Hier wird gleichzeitig deutlich, daß eine Manipulation des Wertes in $_GET[‚fancy_param‘] sich zur Laufzeit nicht in $_REQUEST[‚fancy_param‘] auswirkt. Nach der Manipulation der Daten innerhalb des PHP Scriptes haben beide Ausdrücke unterschiedliche Werte.

Um die POST Methode zu testen, ist im HTML-Code das Attribut ‚method‘ des form-Tags auf method="post" zu ändern.