Multi INSERT aber wie?

shinbo

Mitglied
Ich bin mir nicht so sicher ob es ein reines MYSQL oder ein PHP Problem ist.

Ich benötige einen Denkanstoß, ob das was ich vor habe zu programmieren auch so umsetzbar ist.

Ich möchte in Grunde genommen nur eine Multi „INSERT“ mit „PHP & MYSQL“ und nur mit einem Submit Button realisieren. Dabei hat die DB nur 10 Felder.

Da die Zeilen die eingetragen werden sollen, nicht konstant sind , müssen sie Dynamisch generiert werden . Also im Klar Text manchmal gibt es z.B. 10 Multi INSERT und manchmal nur 3 oder sogar auch nur einen Eintrag in der DB.

Dabei ist ein Feld ein Dropdown und ein anderes eine Checkbox.

Für einen einzelnen Eintrag würde es ja so gehen:

PHP:
$insert = sprintf("INSERT INTO Table_name (FLD_1, FLD_2, FLD_3, FLD_4, FLD_5, FLD_6, FLD_7, FLD_8, visible) VALUES ('$ FLD_1', %s, %s, %s, %s, %s, %s, %s, %s)",
                      // GetSQLValueString($_POST[' FLD_1'], "text"),
                       GetSQLValueString($_POST[' FLD_2'], "int"),
                       GetSQLValueString($_POST[' FLD_3'], "int"),
                       GetSQLValueString($_POST[' FLD_4'], "int"),
                       GetSQLValueString($_POST[' FLD_5'], "text"),
                       GetSQLValueString($_POST[' FLD_6'], "text"),
                       GetSQLValueString($_POST[' FLD_7'], "text"),
                       GetSQLValueString($_POST[' FLD_8'], "text"),
                       GetSQLValueString(isset($_POST['visible']) ? "true" : "", "defined","'Y'","'N'"));

  mysql_select_db($database_DB, $DB);
  $Result1 = mysql_query($insertSQL, $DB) or die(mysql_error());


So geht es leider nicht:

PHP:
$test=”('$ FLD_1', %s, %s, %s, %s, %s, %s, %s, %s) ”;

for($x=0;$x<$i;$x++){

if($x>0 && $x<$i){
$test2[] = ", ";
}

  $test2[] = $test;
   }


$insert = sprintf("INSERT INTO Table_name (FLD_1, FLD_2, FLD_3, FLD_4, FLD_5, FLD_6, FLD_7, FLD_8, visible) VALUES '$test' ",

Die Ausgabe währe dann so, was nicht klappt:
PHP:
$insert = sprintf("INSERT INTO Table_name (FLD_1, FLD_2, FLD_3, FLD_4, FLD_5, FLD_6, FLD_7, FLD_8, visible) VALUES ('$ FLD_1', %s, %s, %s, %s, %s, %s, %s, %s), ('$ FLD_1', %s, %s, %s, %s, %s, %s, %s, %s) ",

Das will so auch leider nicht:

PHP:
$test= “($'FLD_1', $'FLD_2', $'FLD_3', $'FLD_4', $'FLD_5', $'FLD_6', $'FLD_7', $'FLD_8', $'visible') ”;

for($x=0;$x<$i;$x++){

if($x>0 && $x<$i){
$test2[] = ", ";
}

  $test2[] = $test;
   }

$insert = mysql_query("INTO Table_name (FLD_1, FLD_2, FLD_3, FLD_4, FLD_5, FLD_6, FLD_7, FLD_8, visible) VALUES  $'test' ") or die (mysql_error());

Ich bekomme eine Fehlermeldung das die QUERY leer währe, was mache ich falsch?
 
Code:
$insert = mysql_query("INTO Table_name (FLD_1, FLD_2, FLD_3, FLD_4, FLD_5, FLD_6, FLD_7, FLD_8, visible) VALUES  $'test' ") or die (mysql_error());

Da fehlt ein INSERT vor dem INTO!
 
Ups, hatte mich vertippt auch ein Hochkomma ist falsch.
So währe richtiger:

PHP:
$insert = mysql_query("INSERT INTO Table_name (FLD_1, FLD_2, FLD_3, FLD_4, FLD_5, FLD_6, FLD_7, FLD_8, visible) VALUES  '$test2' ") or die (mysql_error());

Ich glaube ich habe in der FOR schleife Blödsinn gemacht. da scheint wohl der Fehler zu liegen. Derzeit habe ich ein SQL Fehler. Vorher hatte ich die"[ ]" in der FOR Schleife nicht und immer nur einen Entrang bekommen.
 
habe es jetzt so gebastelt:

PHP:
for($x=0;$x<$i;$x++){

 $test_array[] = $test;
   }

$test_string = join( ",", $test_array );
//echo $test_string;

 mysql_select_db($database_DB, $DB);

$insert = mysql_query("INSERT INTO Table_name (FLD_1, FLD_2, FLD_3, FLD_4, FLD_5, FLD_6, FLD_7, FLD_8, visible) VALUES  $test_string ") or die (mysql_error());

Ich bekomme keine Fehlermeldung mehr aber nur den letzten Eintrag doppelt eingetragen.
Liegt wahrscheinlich daran das ich das Formular auch Dynamisch generiere; also wenn 2 INSERT kommen ist das Formular Doppelt vorhanden mit derselben Bezeichnung.
Ist bestimmt auch nicht gut oder?
 
Zuletzt bearbeitet:
Zurück