ich eine Liste von einem verschachtelten Array mit Tabellennamen, Feldnamen und Fieldwert, mit mir wiederholenden Tabellennamen zu erzeugen, dherstellen Insert-Anweisung aus drei Variablen
Table1, Field1, Value1
Table1, Field2, Value2
Table1, Field3, Value3
Table2, Field1, Value1
Table3, Field1, Value1
Table3, Field2, Value2
...
, wo die Anzahl von Tabellen und Feldern von Array zu Array variiert Ich möchte ein INSERT schreiben, um die Werte in einer mysql-Tabelle zu erhalten. Zur Erzeugung des SQL Ich verwende:
function array2sql($tableName,$key,$element){
if ($element){
$sql="INSERT into $tableName ($key) values ($element);";
}
}
, die in sich ergeb:
INSERT into Table1 (Field1) values (Value1);
INSERT into Table1 (Field2) values (Value2);
... etc.
Gibt es einen besseren Weg, um die Insert-Anweisung zu erstellen?
Klärung auf dem Array, die die Variablen erzeugt:
Das Array verschachtelt ist, wobei die Anordnung Name der Tabellenname Satz verwendet wird, ist ähnlich wie diese:
Table1[(Field1=>Value1,Field2=>Value2, Field3=>Value3),
[Table2(Field1=>Value1),
[Table3(Field1=>Value1)]
]
]
Die verschachtelten Arrays zuerst analysiert werden Verwerfen aller Unterfelder mit [0] als Schlüssel.
Werte können 'insert in Tabelle 1 (Field1) Werte (x), (y), (z)' Sie nicht brauche auf jeden Einsatz –
Ja gibt es! Niemals von außen stammende Daten direkt in SQL einbeziehen. Verwenden Sie vorbereitete Anweisungen. Aktivieren Sie auch die Emulation der vorbereiteten Anweisungen. Zumindest real_escape Strings, wenn Sie wirklich dynamische Bezeichner verwenden müssen. –
Eine einzelne [vorbereitete Anweisung] (http://php.net/manual/en/pdo.prepared-statements.php) kann immer wieder verwendet werden, um Daten einzufügen. Das ist der einfachste Weg, dies zu tun. – tadman