我期望的目標是允許通過PHP使用PDO將圖像上傳到數據庫。無效的參數編號:混合的名稱和位置參數
數據庫不會有很多值,最多隻有十到十五個,所以我覺得讓圖像上傳到那裏會更舒服。
這是我的PHP代碼:
<?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';
?>
,這裏是我的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>
表:
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
我不確定如果上述定義表。我老實說不熟悉你指的是什麼。
這是兩個錯誤,當我試圖上傳的圖片我越來越:
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
利用這一點,我得到了一些警告和圖像不會上傳。
如何修復我的代碼以允許將圖像上傳到數據庫?
編輯:我道歉,我以前複製並粘貼了錯誤的html代碼。
你的表格是如何定義的? – Alfabravo
如果你的數據庫是爲了保持小,爲什麼上傳圖像呢?這會產生相反的效果。這種邏輯超出了我的想法。有很少的情況下,將圖像上傳到數據庫是一個好主意。圖像是文件,所以只需將它們保存在文件系統中即可。 –
@Alfabravo我很抱歉,但我不知道你的意思是這個問題。 – YABOI