Hello,
Ich brauche die Variable in einer Funktion um dynamisch den WHERE Part einer SQL-Query zu generieren.
Hier ein Beispiel (verkürzte Form):
function WHERE($attr) {
"WHERE ID='".$ID."'";
}$WhereCondition = WHERE($ID);
Nun das Beispiel funktioniert auch. Ich möchte aber, das der Attributname (hier ID=) ebenfalls dynamisch generiert wird. Dieser heisst nämlich immer gleich wie die übergebene Variable, einfach ohne $-Zeichen. Wie könnte ich das umsetzen? Danke für jeden Tipp!
Hier heißt die übergebene Variable aber '$attr', da der Namensraum innerhalb der Funktion nach außen abgegrenzt ist, und die Namen der Funktionsargumente eben in der Klammer deklariert werden.
Außerdem ahne ich, dass Du Dir vielleicht Ärger einfangen möchtest mit Benutzereingaben, die dann im Query landen. Sowas sollte man nämlich nicht tun. Siehe 'SQL Inje[c|k]tion'
Die praktikabelste Lösund wird es aber sein, der Funktion, die die einzelnen Query-Bestandteile zusammenbaut, Arrays bzw. ein Array zu übergeben. Damit ist man dann schon ziemlich nah an der Objektorientierung.
$_query = array();
$_query['type'] = 'select';
$_query['from'][1] = 'tabelle_1';
$_query['from'][2] = 'tabelle_2';
$_query['where'][1]['name'] = 'id';
$_query['where'][1]['value'] = '13';
$_query['where'][2]['name'] = 'name';
$_query['where'][1]['value'] = 'Müller'";
In der Funktion kann man dann danach fragen, ob die einzelnen Elemente vorhanden sind, und daraus das Query generieren.
Das ist jetzt natürlich nur eine Grundidee, denn Du musst ja auch "AND", "OR" usw. berücksichtigen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau