php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.02.2012, 13:27  
Benutzer
 
Registriert seit: 15.08.2011
Beiträge: 96
PHP-Kenntnisse:
Anfänger
kosha kann nur auf Besserung hoffen
Standard Abfrage mit variablen in spaltenname

Also ich hab eine tabelle mit etwa folgenden spalten.. 1_wahl 2_wahl 3_wahl
Jetzt wollte ich z.b die Abfrage so machen
"SELECT :wahl FROM ....", array(':wahl' => $int.'_wahl')
Das beste ist ich bekomme nicht den Wert sondern den Spaltennamen zurück den ich unter :wahl definiert habe.. Arbeite mit drupal 7

Was jemand was ich falsch mache
kosha ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.02.2012, 13:32  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Schauste mal hier: http://www.dvfux.de/book/export/html/19

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 06.02.2012, 14:03  
Benutzer
 
Registriert seit: 15.08.2011
Beiträge: 96
PHP-Kenntnisse:
Anfänger
kosha kann nur auf Besserung hoffen
Standard

nee bei drupal 7 ist es nicht mehr so mit %s , %d.

nee also meine Frage war ja ob ich in die Query Statt des gewünschten Spalten namens eine Variable einfügen kann, also einen Platzhalter.

Bsp.
Code:
$query = db_query("SELECT :col FROM ... WHERE ... ", array(':col' = $gewünschteSPALTE);
kosha ist offline   Mit Zitat antworten
Alt 06.02.2012, 14:07  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

im Regelfall kann man diesen bind-Parameter Funktionen gerade KEIN komplettes Array abkippen, Sondern, du musst im Grunde die einzelnen Parameter mit richtigem Format mit einzelnen Array-Elementen bestücken
Und das sollte bei Drupal auch so sein, obwohl ich es noch nicht verwendet habe

Obendrein erscheinen mit fortlaufend nummerierte Spalten als Faildesign
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 06.02.2012, 14:20  
Benutzer
 
Registriert seit: 15.08.2011
Beiträge: 96
PHP-Kenntnisse:
Anfänger
kosha kann nur auf Besserung hoffen
Standard

ja ne es heisst schon :col => $gewünschteSPALTE (ist auch nur ein Element kein Array mit mehreren SpaltenNamen)
kosha ist offline   Mit Zitat antworten
Alt 06.02.2012, 17:56  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hmm mal aus der drupal 7 doku :

PHP-Code:
$result db_query_range('SELECT n.nid, n.title, n.created
  FROM {node} n WHERE n.uid = :uid'
010, array(':uid' => $uid));
foreach (
$result as $record) {
  
// Perform operations on $node->title, etc. here.

und jetzt bitte keine Bescherde, dass ich db_query_range genommen habe - war halt das erste, das mit passend erschiend um deine Frage zu klären ...

soweit ich das sehe .. liegt die Schuld an deinem Select - Teil vorne ..

du sagst ihm "SELECTIERE MIR TEXT "WAHL" AUS TABELLE XYZ" - dann liefert er dir auch TEXT "WAHL"

du musst dich schon auf eine real existierende Spalte beziehen, und dabei darfst du keine "Ersetzungsparameter" angeben- denn der wird für einen Datenwert gehalten und direkt so wieder zurückgeliefert.

Das kannst du auch in richtigem SQL machen

Code:
SELECT '1' FROM tabelle xyz 
=> 1
das Problem sind gerade die Single-Quotes, die Drupal automatisch um deinen Wert-Parameter :wahl bastelt, denn die Verhindern, dass SQL jenes als Spaltenname identifiziert.
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (06.02.2012 um 18:00 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 07.02.2012, 13:49  
Benutzer
 
Registriert seit: 15.08.2011
Beiträge: 96
PHP-Kenntnisse:
Anfänger
kosha kann nur auf Besserung hoffen
Standard

Jo hast recht, keine Platzhalter bei der Spaltenwahl... Muss also alle Spalten entnehmen die in Frage kommen könnten.. In meinem Fall aber nicht so schlimm, max 3.

Wenn jetzt aber 1 aus 20 Möglichkeiten in Frage kommt, wird es nicht mehr so effizient...
ist das denn dann spürbar?
kosha ist offline   Mit Zitat antworten
Alt 07.02.2012, 15:24  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

Also erstmal - deine Abfrage geht im Normalfall 1 mal über die Leitung ... da interessieren ein paar Byte mehr "Spaltennamen" NICHT. Das würde sich - wenn - nur in extremen Lastsituationen äußern ...

ABER aus Sicherheitsgründen solltest du generell nur die Spalten auswählen, mit denen du weiterarbeitest - und diese explizit angeben. Du machst dein Programm / Script damit robuster (nur mal beispielsweise angenommen, ein weiterer Programmierer wird darauf angesetzt, mit deiner Datenbank als Basis irgendwelche Statistik-Seiten zu füttern. Der stellt fest, dass er in Datenbank-Tabelle xyz eine weitere Spalte braucht und baut die einfach ein - weil er dabei schludrig ist, hängt er die Spalte aber nicht hinten dran, sondern er würgt sie zwischen 2 bestehende Spalten. Dein Script sammelt die Daten per Select * und erwartet dann [0] , [1],[2],[3] als Datenspalten (per fetch_array) .. und nu hängt da eine neue Spalte dazwischen - ergo dein Script geht nicht mehr richtig) und obendrein - modern in der heutigen Zeit der Datensammler -> Datensparsamkeit ... Daten die dein Script nicht aus der Datenbank holt, können auch nicht so einfach entwendet werden - schon weil der potenzielle Angreifer gar nicht weiß, dass sie existieren
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 08.02.2012, 02:14  
Benutzer
 
Registriert seit: 15.08.2011
Beiträge: 96
PHP-Kenntnisse:
Anfänger
kosha kann nur auf Besserung hoffen
Standard

ok wie soll der potenzielle Angreifer wissen welche Daten ich aus der DB hole, wenn ich sie nicht anzeige...
kann man die Daten aufgreifen?
kosha ist offline   Mit Zitat antworten
Alt 08.02.2012, 08:38  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von kosha Beitrag anzeigen
ok wie soll der potenzielle Angreifer wissen welche Daten ich aus der DB hole, wenn ich sie nicht anzeige...
kann man die Daten aufgreifen?
Wenn SQL-Injection geht, fragt man einfach die Katalogtabellen ab.

Andreas
akretschmer ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
[Erledigt] Abfrage über 2 Variablen mit gleicher Priorität spiderguy Datenbanken 10 09.09.2010 16:24
PHP5 und Variablen initialisieren kojak2008 PHP Tipps 2010 9 17.08.2010 14:33
[jQuery] php Variablen verwenden TroTz HTML, Usability und Barrierefreiheit 1 21.03.2010 15:41
result Variablen von SQL verbinden vci PHP Tipps 2010 15 05.02.2010 19:09
[Erledigt] Variablen aus assoziativem Array generieren Warlock0 Datenbanken 12 19.01.2010 15:28
SQL abfrage mit variablen geht nicht (verzweifle) Puiscel Datenbanken 3 03.07.2009 15:05
PHP variablen Übergabe für MySQL Abfrage mindenator PHP Tipps 2008 10 28.12.2008 03:01
LIMIT Abfrage mit Variablen PHP Tipps 2007 6 14.11.2005 17:41
spaltenname für update aus variablen auslesen Datenbanken 3 29.07.2005 12:57
php Variablen in MySQL Abfrage verwenden (WHERE Bedingung) PHP Tipps 2005 20 20.04.2005 20:05
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
doppelte Variablen abfrage PHP Tipps 2004 0 03.08.2004 17:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
drupal 7 variablen auslesen, mysql abfrage mit variablen spaltennamen, spalten name php

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum