ChrisB: [gelöst] Ein Array ferngesteuert auslesen

Beitrag lesen

Hi,

Nope! Die Krux liegt darin das der, der die Funktion nachher nutzen möchte(*) selber bestimmen kann was aus der Antwort des Querys (wie auch immer formatiert) verwendet werden soll. Wenn der Query 3 Spalten abfragt, oder 1 oder 2 und diese Auf eine bestimmte Art und Weise ausgeben möchte. Zb, das Feld 'name', 'nachname', 'geburtstag' und diese in der Foramtierung "$r[nachname],$r[name] ($r[geburtstag])" im Optionsfeld erscheinen soll, reicht es nicht einfach Index und ein weiteres Feld aus zulesen.

Ist letztendlich auch egal, wie viele Werte du ausliest.

Aber wenns etwas kompliziertere Formatierung wie im Nach/Name/Geburtstags-Beispiel verlangt versagt das Konzept.

  • SELECT name,nname,geb FROM ...
  • $datensatz = mysql_fetch_array($result, MYSQL_NUM) // also bspw. entsprechend array('Robert', 'Robson', '17.02.1990')
  • vsprintf('%2$s,%1$s (%3$s)', $datensatz)

Ergebnis: Robson,Robert (17.02.1990)

(Da hier alle ausgelesenen Werte in einen HTML-Kontext überführt werden sollen, kann htmlspecialchars noch per array_map auf das Datensatz-Aray angewandt werden, bevor dieser an vsprintf übergeben wird.)

Man müsste bei PHP so ein Funktion wie bei Javascript eval() haben die einfach mal Inhalte aus einem String in echte Funktionen/Variablen um-interpretiert.

Erstens hat man die ja - heißt auch genauso - und zweitens wär's natürlich idiotisch, die zu benutzen.

Nope!^2  Damit hab ich mir auf jeden Fall den Goldenen Facepalm der Woche eingefangen!

Nope³, diese Auszeichnung gebührt der folgenden Aussage:

Ich dachte nicht das es die Funktion gibt. Und sie löst das  Problem auch genau wie gedacht.

Und sie schafft neue Probleme, an die du nicht gedacht hast.

der, der die Funktion nachher nutzen möchte(*)
(*) Das bin nur ich :)

... der kann dann auch unlink('irgendeinedatei') o.ä. im „Format-String“ unterbringen; egal ob bewusst oder unbewusst, damit lässt sich jede Menge Schaden anrichten.

Hier mal am Beispiel um es zu zeigen. Plus Alternativbeispiel das die freie Verwendungsmöglichkeit zeigt.

Beispiel für *sinnvolle* Umsetzung - siehe oben.

MfG ChrisB

--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?