Mein gewünschtes Ziel ist es, das Hochladen von Bildern in die Datenbank über PHP mit PDO zu ermöglichen.Ungültige Parameternummer: gemischte benannte und positionale Parameter
Die Datenbank wird nicht viele Werte haben, höchstens zehn bis fünfzehn, also fühle ich mich wohler damit, die Bilder dort hochladen zu lassen.
Hier ist meine PHP-Code:
<?php
require '../../app/start.php';
if (!empty($_POST)) {
$name = $_POST['name'];
$position = $_POST['position'];
$detail = $_POST['detail'];
$imageData = addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
$imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
$insertPage = $db->prepare("
INSERT INTO about (name, position, detail, imageType, imageData)
VALUES (:name, :position, :detail, {$imageProperties['mime']}, {$imageData})
");
$insertPage->execute([
'name' => $name,
'position' => $position,
'detail' => $detail,
'imageType' => $imageProperties['mime'],
'imageData' => $imageData
]);
}
header('Location: ' . BASE_URL . '/admin/about/list.php');
require VIEW_ROOT . '/admin/about/add.php';
?>
und hier ist mein HTML:
<form action="<?php echo BASE_URL; ?>/admin/about/add.php" method="POST" enctype="multipart/form-data" autocomplete="off">
<label for="name">
Name
<input type="text" name="name" id="name" value="">
</label>
<label for="position">
Position
<input type="text" name="position" id="position" value="">
</label>
<label for="detail">
Detail
<textarea name="detail" id="detail" cols="30" rows="10"></textarea>
</label>
<label for="imageId">
Upload Image File:
<input name="userImage" id="userImage" type="file" class="inputFile" />
</label>
<input type="submit" value="Add Page">
</form>
Tabelle:
id int(11) NO PRI auto_increment
imageId tinyint(3) NO
imageType varchar(25) YES
imageData mediumblob NO
name varchar(35) NO
position varchar(35) NO
detail varchar(120) NO
Ich bin nicht sicher, ob die oben in der Tabelle definiert. Ich bin ehrlich gesagt nicht vertraut mit dem, worauf Sie sich beziehen.
Dies sind die beiden Fehler, die ich immer bin, wenn ich versuche, das Bild zu laden:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters in /admin/about/add.php on line 24
Warning: Cannot modify header information - headers already sent by (output started at /admin/about/add.php:24) in /admin/about/add.php on line 26
diese verwenden, erhalte ich ein paar Warnungen und das Bild nicht laden.
Wie kann ich meinen Code reparieren, um das Hochladen von Bildern in die Datenbank zu ermöglichen?
Edit: Ich entschuldige mich, ich kopierte zuvor und kopierte den falschen HTML-Code.
Wie ist Ihre Tabelle definiert? – Alfabravo
Wenn Ihre Datenbank klein gehalten werden soll, warum sollten Sie Bilder hochladen? Das wird den gegenteiligen Effekt haben. Diese Logik ging über meinen Kopf. Es gibt sehr wenige Fälle, in denen das Hochladen von Bildern in eine Datenbank eine gute Idee ist. Bilder sind Dateien, also behalte sie einfach im Dateisystem. –
@ Alfabravo Ich entschuldige mich, aber ich weiß nicht, was Sie mit dieser Frage meinen. – YABOI