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:
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.
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:
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.
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.