"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP stringvariable 'refreshen'?

Umlüx 08.06.2017 - 13:41 1663 9
Posts

Umlüx

Huge Metal Fan
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 8967
bah wie erklär ich das nun am besten... ich merks immer öfter. da ich nie wirklich coden gelernt hab sondern mir alles selber beigebracht habe, fehlen mir oft die richtigen begriffe für diverse vorgänge. dann tut man sich auch mit googlen schwer..

beispiel:
ich hab eine php variable $query="select * from $table";
nun wird $table aber erst später befüllt! wie 'refreshe' ich $query nun mit dem aktuellen wert?
geht sowas überhaupt?
meine erste idee war einen platzhalterstring zu verwenden, den ich dann später ersetz (str_replace?) und damit die letztendliche variable baue. aber geht das einfacher?

UnleashThebeast

Mr. Midlife-Crisis
Avatar
Registered: Dec 2005
Location: 127.0.0.1
Posts: 3546
Die Variable muss zu dem Zeitpunkt wo du sie verwendst auch befüllt sein.

Sonst ist dein Code ja
Code: PHP
$query="select * from ";

ill

...
Avatar
Registered: Nov 2003
Location: Salzburg
Posts: 2059
Du willst also, dass bei jeglicher Änderung von $table sich auch direkt die $query - variable ändert?

Das hinzukriegen würde das ganze wohl unnötig verkomplizieren, persönlich würd ich das ganze einfach über eine Funktion bzw. eine statische Helper-Methode machen:

Code: PHP
public static function buildQueryString(string $table) : string {
    return 'select * from ' . $table;
}

Die rufst du dann einfach immer auf, wenn sich $table ändert bzw. wenn du eine $query - variable benötigst.

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10334
Umlüx.. ist das nur ein Beispiel oder verwendet du das wirklich so ähnlich?

Ich frag so seltsam weil ich mir wirklich schwer tue einen Fall zu konstruieren bei dem der Table nicht eh fix ist - ohne dass der ganze Programmieransatz ziemlich verkehrt ist.

Zu deiner Lösung:

$query = "select * from ";

und beim execute machst dann
mysql_query($query . $table);

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Egal was du vorhattest, benuetz am besten prepared statements dafuer.
Da sparst du dir SQL injection routinen und es ist nachher sogar ganz huebsch und lesbar.

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10334
*upvote Obermotz's posting* ;)

Umlüx

Huge Metal Fan
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 8967
das sql war jetzt nur ein flottes beispiel.
aber danke für eure denkansätze!

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4284
Warum überhaupt refreshen? Einfach die kurze Zeile kopieren und die die Variable neu zuweisen.

Umlüx

Huge Metal Fan
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 8967
ja genau das wollt ich damit verhindern. für sql kann ich die oben beschriebenen prepared statements benutzen.

für den rest muss ich mir was anderes überlegen. anderes beispiel dazu wäre eine lokalisation wo du die strings aus einer externen include einliest und diese dann zur laufzeit z.b. mit username und datum vervollständigen willst oder ähnliches.

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4284
Das wird dann oft mit sprintf gemacht.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz