Fatal-Error nach Umstellung von PHP7.4 auf PHP8.0 (PHP Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter)

mDie

Grünschnabel
Hallo,

ich bekomme nach der Umstellung von PHP7.4 auf PHP8.0 folgenden Fatal Error in der Apache2 error.log angezeigt:
PHP Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter ...

Die Seite ist nicht aufrufbar. Es handelt sich um folgendes Script zum speichern von Formulareinträgen in SQL:

$statement = $pdo->prepare("INSERT INTO literatur (
Autor,
Bezeichnung,
ISBN,
Stand,
Folgebestellung,
created_user
) VALUES (
'" . $_POST['Autor'] . "',
'" . $_POST['Bezeichnung'] . "',
'" . $_POST['ISBN'] . "',
'" . $_POST['Stand'] . "',
'" . $_POST['Folgebestellung'] . "',
'".$_SESSION['id']."'
)");

$statement->execute(array(
'Autor',
'Bezeichnung',
'ISBN',
'Stand',
'Folgebestellung',
'created_user'
));

Wenn ich wieder zurück auf PHP7.4 umstelle, funktioniert alles problemlos.

Eine Anmerkung: Das Feld "Folgebestellung" ist teilweise leer.

Ich hoffe, jemand von euch kann mir helfen. Ich sitze da nun schon mehrere Stunden dran und sehe vllt. den Wald vor Bäumen nicht mehr. :(
 
Das Problem konnte gelöst werden. Die Variablen von Values habe ich in das array eingebaut und die im Value durch ein ? ersetzt, sodass nun auch unter PHP8 alles läuft.

$statement = $pdo->prepare("INSERT INTO literatur (
Autor,
Bezeichnung,
ISBN,
Stand,
Folgebestellung,
created_user
) VALUES (
?,
?,
?,
?,
?,
?
)");

$statement->execute(array(
$_POST['Autor'],
$_POST['Bezeichnung'],
$_POST['ISBN'],
$_POST['Stand'],
$_POST['Folgebestellung',
$_SESSION['id']
));
 
Zurück