2015-12-04 3 views
1

Я пытаюсь загрузить путь к файлу в базу данных MySQL. У меня есть этот HTML форму:не удалось загрузить файл через базу данных

<form action="" method="post" name="add_maps" enctype="multipart/form-data"> 
<table border="1" cellpadding="2" cellspacing="1" align="center" dir="rtl"> 
<tr> 
<th> 
name of map</th> 
<td> 
<input type="text" name="name_of_map"/> 
</td> 
<th> 
select map</th> 
<td> 
<input type="file" name="file" id="file"/> 
</td> 
</tr> 
<tr> 
<input type="submit" name="submit_map" value="upload"/> 
</tr> 
</table> 
</form> 

И на той же странице, у меня есть PHP код для загрузки:

<?php 
require_once('../include/inner_global.php'); 
$hostdb = "localhost"; 
$namedb = "architect"; 
$userdb = "root"; 
$passdb = "root"; 
$id = $_REQUEST['id']; 
$name=''; 
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$conn->exec("SET CHARACTER SET utf8mb4"); 

$path = "../uploads/".$_FILES['file']['name']; 
if(isset($_POST['submit_map'])){ 
    try{ 
     $name = isset($_POST['name']) ? $_POST['name'] : ''; 
     $ext = pathinfo($path, PATHINFO_EXTENSION); 
     if(move_uploaded_file($_FILES["file"]["tmp_name"], $path)){ 
      $path = "./uploads/".$path; 
      $sql = "INSERT INTO maps(name_of_maps, projects_id, map) VALUES (:name, :id, :file)"; 
      $stmt = $conn->prepare($sql); 
      $stmt->bindValue(":name", $name); 
      $stmt->bindValue(":id", $id); 
      $stmt->bindValue(":file", $path); 
      $count = $stmt->execute(); 
     } 
    } 
    catch(PDOException $e) { 
     echo $e->getMessage(); 
     header("location: insert_map_false.php?id=".$id); 
    } 
} 
?> 

Когда я иду на страницу, где этот HTML форма есть, я получаю напрямую эта ошибка в заголовке:

enter image description here

PS

Файлы загружаются правильно на их пути, когда я нажимаю на загрузку, но не добавляется в базу данных. EDIT

Это мой стол

типы данных

enter image description here

+0

Что ваш тип базы данных этого поля? – uruloke

+0

показать нам полный код страницы, потому что, если вы получите сообщение об ошибке на странице, где находится html-форма, на этой странице должна быть проблема (даже перед загрузкой). –

+0

попробуйте сделать var_dump ($ _ FILES) в блоке try, чтобы узнать, файл загружается. –

ответ

1

Первый чек от должности или нет. Добавить весь код в этом состоянии, он будет решить вашу проблему:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
//All code .... 
} 

или создать hidden input внутри от:

<input type="text" name="id" type="hidden" value="<?php echo $_REQUEST['id']; ?>"/> 

Я думаю, что проблема в $id = $_REQUEST['id']; потому что значение $id является empty после от submit

+0

почему ваш код удалил мою ошибку? в чем разница между $ _SERVER ['REQUEST_METHOD'] и $ _POST, и почему $ _POST не удалил эту ошибку? – am90

+0

оба работают одинаково в вашем случае, но ваш ** $ _ FILES ['file'] ['name'] ** находится вне вашего условия if @ am90 –

+0

, но почему, когда я обновляю страницу, тот же файл снова добавляется? – am90

1

Ваш SQL запрос:

$sql = "INSERT INTO maps(name_of_maps, projects_id, map) VALUES (:name, :id, :file)"; 

Но ваша колонка name_of_map и не name_of_maps

Вы запрос должен быть таким:

$sql = "INSERT INTO maps(name_of_map, projects_id, map) VALUES (:name, :id, :file)"; 
Смежные вопросы