Hi.
Ich möchte einen Feldnamen folgendermaßen als Parameter übergeben:
DB.execute("UPDATE `tabelle` SET ? = ? WHERE id = ?",(feld,wert,id) )
Was ist daran der Fehler?
Es meldet mir ein falsches ? im Query.
Feldname als Paramter übergeben?
Die Platzhalter funktionieren nur für Werte. Alles was über Platzhalter eingefügt wird, wird entsprechend "escaped" und das darf man bei Namen nicht machen, weil dann kein gültiges SQL mehr heraus kommt.
Tabellen- oder Spaltennamen weiss man normalerweise ja auch wenn man die SQL-Anweisung schreibt. Falls nicht, musst Du den Namen per Zeichenkettenformatierung einfügen.
Mit so etwas sollte man vorsichtig sein und auf keinen Fall Eingaben von aussen ungeprüft übernehmen.
Tabellen- oder Spaltennamen weiss man normalerweise ja auch wenn man die SQL-Anweisung schreibt. Falls nicht, musst Du den Namen per Zeichenkettenformatierung einfügen.
Code: Alles auswählen
DB.execute('UPDATE tabelle SET %s = ? WHERE id = ?' % feld, (wert, id))