2013-05-22 3 views
2

код сохранить фотографию внутри папки в корне, но в базе данных не сохранить рут на фотографию ... вы можете мне помочь с этим.Не удается обновить фотографию в базе данных с помощью PDO

здесь форма:

<form class='form-horizontal' method='post' action='' enctype='multipart/form-data'> 
      <fieldset> 
      <legend><i class='icon32 icon-wrench'></i>Configuración General del Sistema</legend> 

      <div class='control-group'> 
       <label class='control-label' for='typeahead'>Nombre de la Clínica</label> 
       <div class='controls'> 
        <input type='text' class='span6 typeahead' name='nombre_clinica' 
         value='<?php echo $nombre_clinica; ?>' /> 
       </div> 
      </div> 
      <div class='control-group'> 
       <label class='control-label' for='typeahead'>Dirección</label> 
       <div class='controls'> 
        <input type='text' class='span6 typeahead' name='direccion' 
         value='<?php echo $direccion; ?>' /> 
       </div> 
      </div> 
      <div class='control-group'> 
       <label class='control-label' for='typeahead'>Número de Teléfono</label> 
       <div class='controls'> 
        <input type='text' class='span6 typeahead' name='telefono_clinica' 
         value='<?php echo $telefono_clinica; ?>' /> 
       </div> 
      </div> 
      <div class='control-group'> 
       <label class='control-label' for='typeahead'>Viñeta de página web</label> 
       <div class='controls'> 
        <input type='text' class='span6 typeahead' name='titulo_clinica' 
         value='<?php echo $titulo_clinica; ?>' /> 
       </div> 
      </div> 
      <div class='control-group'> 
       <label class='control-label' for='typeahead'>Logo Clínica</label> 
       <div class='controls'> 
        <input type="hidden" name="MAX_FILE_SIZE" value="200000" /> <input data-clear-btn="true" class="input-file uniform_on" name="logo" id="fileInput" value="nopic.jpg" type="file" accept="image/png, image/jpeg"/> 
        <br /> 
        <img style='max-height:80px;' src='../images/<?php echo $logo; ?>' /> 
       </div> 
      </div> 
      <div class='control-group'> 
       <label class='control-label' for='typeahead'>Meta tag del Software clínico</label> 
       <div class='controls'> 
        <input type='text' class='span6 typeahead' name='page_meta_tag' 
         value='<?php echo $page_meta_tag; ?>' /> 
       </div> 
      </div> 
      <div class='control-group'> 
       <div class='controls'> 
      <input type='hidden' name='id' value='<?php echo $id ?>' /><input type='hidden' name='action' value='update' /> 
      <input type='submit' class='btn btn-primary' value='Actualizar configuracion' /> 
       </div> 
      </div> 
      </fieldset> 
     </form> 

и вот код:

<?php 
include '../include/update_config.php'; 

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); 

$action = isset($_POST['action']) ? $_POST['action'] : ""; 
if($action == "update"){ 
     try{ 
move_uploaded_file($_FILES['logo']['tmp_name'], "../images/" . $_FILES['logo']['name']); 
      $query = 'update CONFIGURACION set id = :id, nombre_clinica = :nombre_clinica, direccion = :direccion, telefono_clinica = :telefono_clinica, titulo_clinica = :titulo_clinica, logo = :logo, page_meta_tag = :page_meta_tag where id = 0'; 
       $stmt = $conn->prepare($query); 

       $stmt->bindParam(':nombre_clinica', $_POST['nombre_clinica']); 
       $stmt->bindParam(':direccion', $_POST['direccion']); 
       $stmt->bindParam(':telefono_clinica', $_POST['telefono_clinica']); 
       $stmt->bindParam(':titulo_clinica', $_POST['titulo_clinica']); 
       $stmt->bindParam(':logo', $_POST['logo']); 
       $stmt->bindParam(':page_meta_tag', $_POST['page_meta_tag']); 
       $stmt->bindParam(':id', $_POST['id']); 

       // Execute the query 
       $stmt->execute(); 

       echo "Registro actualizado correctamente."; 

     }catch(PDOException $exception){ 
       echo "Error: " . $exception->getMessage(); 
     } 
} 

try { 

     $query = "select nombre_clinica, direccion, telefono_clinica, titulo_clinica, logo, page_meta_tag from CONFIGURACION where id = 0"; 
     $stmt = $conn->prepare($query); 

     $stmt->bindParam(1, $_REQUEST['id']); 

     $stmt->execute(); 

     $row = $stmt->fetch(PDO::FETCH_ASSOC); 

     $id = $row['id']; 
     $nombre_clinica = $row['nombre_clinica']; 
     $direccion = $row['direccion']; 
     $telefono_clinica = $row['telefono_clinica']; 
     $titulo_clinica = $row['titulo_clinica']; 
     $logo = $row['logo']; 
     $page_meta_tag = $row['page_meta_tag']; 


}catch(PDOException $exception){ 
     echo "Error: " . $exception->getMessage(); 
} 


?> 

фото это сохранить успешно в папке ../images/

+1

Почему 'где id = 0'? Думаю, это твоя проблема. – leftclickben

+0

как отмечалось в @leftclickben, не должно быть '$ query =" select ... where id =? ";' Как вы делаете '$ stmt-> bindParam (1, $ _REQUEST ['id']);' – Sean

+0

@asterix_jv, какое значение вы получаете сейчас в столбце 'logo' – Yogus

ответ

1
$path = "images/" . $_FILES['logo']['name']; 
move_uploaded_file($_FILES['logo']['tmp_name'], "../".$path); 
... 
$stmt->bindParam(':logo', $path); 
+0

Wow @ user1122069, который действительно работает !!! Огромное вам спасибо! –

+0

@asterix_jv, это тоже совершенно небезопасно! Я могу просто загрузить любой файл, который я хочу на ваш сервер. е путь или что-то еще. Что делать, если я загружу 'something-evil.php' и запустил его из моего браузера? Никогда не оставляйте загруженные пользователем документы в корне doc. Никогда не позволяйте пользователю указывать имя файла, как оно есть на вашем диске. – Brad

+0

@Brad их мне нужно санировать ?? Я не знаю много PDO ... вы можете дать мне ключ? –

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