vielleicht könnt Ihr mir hier weiter helfen, finde leider keine Lösung, möchte MySQLi bind_param() ein Array übergeben. Also meine Frage ist wie kann ich ein Array in die bind_param() Syntax einbinden??? Hab leider nicht dazu im Web gefunden!
for($i=1; $i<$count_feldname; $i++){ // "?" als Platzhalter (wieviele Eintraege werden es sein, jedes ? steht fuer einen Eintrag!) $platzhalter .= ",?";//werden hier dynamisch erzeugt, je nach Bedarf!
//Datentyp "s" fuer String $daten_typ .= "s";//wird hier dynamisch erzeugt, je nach Bedarf! }
foreach($content[1] as $key => $value[]){} $eintrag->bind_param($daten_typ,$referenznummer,$modell_name,$value[0],$value[1],$value[2],$value[3],$value[4],$value[5],$value[6]); $eintrag->execute(); //Dieser Code funktioniert so mit dem $value[0]-$value[6], also mit Variablen und durch Kommata getrennt! Aber nicht mit einem Array!
/* $daten_typ //wird dynamisch zu $value[] angepasst $referenznummer,$modell_name //bleiben unverändert $value[] //dynamisch angepasst, die Anzahl kann stark variieren!! */
//So bräuchte ich den Code: foreach($content[1] as $key => $value[]){} $content = $value //z.B. $value[0] bis $value[6];
oder
//Array wird in einen String umgewandelt und der Inhalt mit einem Separator getrennt! $content = implode("','", $content[1]);
//In die DB eintragen! $eintrag->bind_param($daten_typ,$referenznummer,$modell_name,$content); $eintrag->execute();
// Pruefen ob der Eintrag efolgreich war if ($eintrag->affected_rows == 1){ echo 'Der neue Eintrage wurde hinzugefuegt.'; } else{ $fehler .= 'Der MySQL-Eintrag konnte nicht hinzugefuegt werden (vielleicht existiert er schon, gleiche Referenznummer?)!'; }
Hallo Mario, aus deinem Code-Beispiel werde ich grad nicht schlau. Kannst du mal die Tabellen-Struktur ergänzen? Und ggf. auch einen Beispiel-Datensatz aus deinem Dokument?
Welchen Sinn sollte das auch machen? An welche Felder sollten denn die einzelnen Elemente des Arrays gebunden werden? Du kannst nur einen "Wert" an ein Feld /Parameter übergeben.
Für mich: ca. 8.000 Modell-Beschreibungen und mehr, nicht von Hand einzutragen. Die Beschreibung wird so aus einem Dokument ausgelesen und dem Modell zugeordnet durch die RefNr. Diese Prozedur dauert automatisiert ein paar Minuten, von Hand einige Monate. Mir fehlt die Zeit dazu ;-|
Vom Code her: Betreffend der alten MySQL-Funktionen auf MySQLi umzustellen.
An welche Felder sollten denn die einzelnen Elemente des Arrays gebunden werden?
1.Feldname mit Element aus $value[0] 2.Feldname mit Element aus $value[1] 3.Feldname mit Element aus $value[2] u.s.w.
Meine Frage ist eigentlich wie ich aus einem Array die Bindung zu Feldnamen und Element syntaktisch herstellen kann! Wenn die Bindung von Feldname mit dem Element aus dem Array nicht syntaktisch richtig ist, bricht bind_param() mit einem Fehler ab.
Du kannst nur einen "Wert" an ein Feld /Parameter übergeben so soll es auch sein, aber wie oben beschrieben aus einem Array.
Das war das, was ich meinte: Die Datenbank erwartet explizit den Feldnamen im SQL String. Es wird nicht "durchgezählt": 1. Feld, 2. Feld, ... Stell Dir vor, jemand jemand fügt in der Tabelle an der 2. Stelle ein neues Feld ein. Dann stimmt die "Numerierung" ja nicht mehr.
Du könntest mal folgendes testen: Lies aus der Tabelle die Feldnamen aus. Packe diese in ein Array. Dann baust Du mit den echten Feldnamen aus dem Array Deinen SQL String.