Hallo ich habe eine 70/80 Feldform, die ich in eine Tabelle einfügen muss, anstatt manuell eine riesige Insert-Anweisung zu erstellen, habe ich zuerst eine Tabelle in meiner Datenbank erstellt hier aus den Namen der Eingänge in Form ist der Code, den ich erstellen können/ändern sie die TabelleMysqli update werfen Aufruf an eine Memberfunktion bind_param() error
function createTable($array, $memberMysqli)
{
foreach ($array as $key => $value)
{
//echo "<p>Key: ".$key." => Value: ".$value . "</p>";
$query = "ALTER TABLE questionnaire ADD ".$key." text";
if($stmt = $memberMysqli->prepare($query))
{
$success = $stmt->execute();
}
}
echo "<h1>Array count: ". count($array) ."</h1>" ;
}
Dies funktioniert gut, und der Tisch genau verändert, wie ich es wollte. Jetzt, um die Formularwerte einzufügen, um dies zu tun, mache ich ein grundlegendes Feld einfügen die ID der Zeile speichern und dann haben alle Post-Variablen Schleife diese Zeile aktualisieren. Hier ist mein Code dafür:
$stmt = $memberMysqli->prepare("INSERT INTO questionnaire(userid) VALUES (?)");
$stmt->bind_param('s', $_POST['userid']);
$stmt->execute();
$rowid = $stmt->insert_id;
$stmt->close();
$memberMysqli->autocommit(FALSE);
function updateColumn($memberMysqli, $query, $uid, $value)
{
if ($value)
{
$stmt = $memberMysqli->prepare($query);
//Throws bind param error here
$stmt->bind_param("ss", $value, $uid);
$stmt->execute();
}
}
function loopInputs($array, $memberMysqli, $rowid)
{
foreach ($array as $key => $formvalue)
{
var_dump($key);
updateColumn($memberMysqli, "UPDATE questionnaire SET $key = ? WHERE id = ?", $rowid, $formvalue);
}
}
loopInputs($_POST, $memberMysqli, $rowid);
$memberMysqli->commit();
$memberMysqli->close();
Dies löst einen Bind-Param-Fehler und ich habe keine Ahnung warum. Jede Hilfe wäre großartig.
Danke! Das ist ein handliches Stück Code, von dem ich hätte wissen müssen. Das Problem war, dass wenn ich die Tabelle änderte, es ein Feld 'submit' erzeugte und dies das Problem beim Update verursachte. – lnelson92