2016-10-05 4 views
-1

Я написал этот код, чтобы загрузить информацию о файлах в моей базе данных MySQL:сохранить информацию об изображении/файла в базе данных MySQL

<?php 
require __DIR__ . '/database.php'; 

$file = $_GET["item"]; 

$itemName = $_GET["itemName"]; 
$uploadDate = filectime($file); 
$filePathArray = pathinfo($file); 
$filePath = $filePathArray["filename"]; 

$stmt = db()->prepare("INSERT INTO items (id, itemName, uploadDate, filePath) VALUES ('','{$itemName}','{$uploadDate}','{$filePath}"); 
$stmt->execute(); 
?> 

Html код:

<form action="upload_action.php"> 
    Item Name:<br> 
    <input type="text" name="itemName"><br> 
    File:<br> 
    <input type="file" name="item"><br> 
    <input type="submit" name="submit"> 
</form> 

Но я всегда получаю «filectime(): stat failed "и фатальная ошибка .. не могу понять почему. Не могли бы вы мне помочь и исправить мой код, это было бы приятно для меня

+1

файлов требуется метод пост и действующий ENCTYPE и с помощью' $ _FILES ', а не' $ _GET'. Рассмотрите это как «ответ». –

+0

Спасибо за ответ, но теперь я получаю такие ошибки, как: filectime() ожидает, что параметр 1 будет допустимым путем, а pathinfo() будет действительной строкой – iTzMeRafa

ответ

0

Вы должны добавить атрибут ENCTYPE в форму:

<form method="post" action="upload_action.php" enctype="multipart/form-data"> 
    Item Name:<br> 
    <input type="text" name="itemName"><br> 
    File:<br> 
    <input type="file" name="item"><br> 
    <input type="submit" name="submit"> 
</form> 

Тогда ваш загруженный файл будет в глобальной переменной «$ _FILES "

<?php 
print_r($_POST); 
print_r($_FILES); 

$file = $_FILES["item"]; 

$itemName = $_POST["itemName"]; 
$uploadDate = filectime($file['tmp_name']); 
$filePathArray = pathinfo($file['tmp_name']); 
$filePath = $filePathArray["filename"]; 

print_r($uploadDate); 
print_r($filePathArray); 
?> 

Но прежде, чем сохранить путь в вашей БД, вы должны переместить загруженный файл с move_uploaded_file

Смежные вопросы