PHP PDO - Bind Tabellenname? [Duplikat]

8

Ist es möglich, einen Tabellennamen zu binden?

Ich möchte eine Klasse erstellen, um die Spalten aus einer Tabelle zu lesen und, je nach Feldtyp, die Formulareingaben für mich zu generieren. Wenn ich $form = new form("users"); mache, sollte der Konstruktor damit beginnen, die Feldnamen aus der Tabelle mit dem folgenden Code abzurufen:

%Vor%

Das funktioniert gut, wenn ich in der prepare-Anweisung "users" anstelle von ": table" festlege, aber die bind es funktioniert, und ich bin mir ziemlich sicher, dass es darum geht, einen Tabellennamen zu binden. Dies muss auch gebunden werden, da ich gerne meine Tabellennamen durch $_GET und die Suchfunktion übergeben könnte.

    
Chat Tor 03.03.2013, 05:54
quelle

2 Antworten

9
  

Ist es möglich, einen Tabellennamen zu binden?

Nein.

Sie müssen Tabellennamen auf die weiße Liste setzen. Ich bezweifle, dass Sie einen Benutzer die Tabelle any aus Ihrer Datenbank durchsuchen lassen möchten.

Und Sie müssen Identifikatoren auch manuell formatieren. Es gibt ein Tag-Wiki mit Beispiel. Warum nicht zuerst lesen?

Aktualisierung: Wie Sie sehen können, erweist sich PDO als unbequem für reale Aufgaben. Sie müssen also eine intelligentere Abstraktionsbibliothek für die Verarbeitung von MySQL-Abfragen haben. Hier ist ein Beispiel mit der Klasse safeMysql , die Ihren Code drastisch verkürzt:

%Vor%

2 Hinweise:

  • Ich habe den zweiten Parameter entfernt, da es in Ihrer Funktion keinen Code gibt, der ihn benutzt.
  • NIEMALS in der Klasse verbinden. Verwenden Sie stattdessen eine bereits geöffnete Verbindung. Oder Sie werden Ihren MySQL-Server mit so vielen Verbindungen beenden.

Ausgeschlossene Version ausschließen

%Vor%

Eine solche Klasse kann jedoch selten wie beabsichtigt verwendet werden - es gibt immer eine Menge Ausnahmen und manuelle Formatierungen, um sie nutzbar zu machen.

    
Your Common Sense 03.03.2013, 05:57
quelle
2

Es gibt eine PDO-Wrapper-Klasse unter - Ссылка Sie tun dies (obwohl ich neu bei PDO bin, also vielleicht nicht mit vorbereiteten Aussagen)

Seine vorgeschlagene Verwendung ist:

%Vor%

Ich würde mich dafür interessieren, wenn andere meinen, dies sei ein "sicherer" Weg, PDO zu verwenden oder nicht.

    
acutesoftware 03.03.2013 06:42
quelle

Tags und Links