Dynamische SQL-Abfrage

luke_the_duke

Erfahrenes Mitglied
Hallo zusammen!

ich habe folgendes Problem. Ich habe einen Flash-Clip, der SQL-Einträge via PHP editieren, löschen usw. kann. Mir war dabei wichtig, dass die ganze Sache voll dynamisch ist, das einzige, was ich mittlerweile noch von Hand eintippen muss, ist der Tabellenname. Nun habe ich jedoch ein Problem mit meinem insert-Script. Das insert-Script bekommt den Tabellen-Name im Hyperlink und die Namen der SQL-Felder und deren neue Inhalte sind im $_POST-Array. Nun möchte ich eine msql_query generieren, die angepasst an die Anzahl der SQL-Spalten, mit den Namen und den Texten aus Flash operiert. Dafür brauche ich irgend einen String-Combiner und mit eval bin ich bisher nur gescheitert. Kann mir jemand helfen?

Gruss Lukas

PHP:
<?php
include ("conn.php");//verbindet
// anzahl felder
$result = mysql_query ("SELECT * FROM $table");
$result_num = mysql_num_fields($result);

//einholen der daten
$text = $_POST["text_field1"];
$name = $_POST["field_name1"];
for ($i=2;$i<$result_num;$i++)  {
	$text = $text.",".$_POST["text_field$i"];
	$name = $name.","."'".$_POST["field_name$i"]."'";
}
// einfügen
eval ("\$insert = mysql_query(\"INSERT INTO \$table (\"\$name\") VALUES (\"\$text\");"
if (!$insert) {
	echo "&output=Fehler";
}else {
	echo "&output=$insert";
}
?>
 
Du musst nicht unbedingt die eval()-Funktion verwenden. Versuch mal Folgendes:
PHP:
<?php
	[…]
	$insert = mysql_query("INSERT INTO `".$table."` (`".$name."`) VALUES ('".mysql_escape_string($text)."')");
	[…]
?>
Übrigens empfehle ich dir die Benutzung der mysql_escape_string()-Funktion.
 
Zurück