Получить исходный код img из базы данных

Я работаю над обновлением своих данных в базе данных, и вот моя проблема:

Здесь код:

if (!empty($_FILES['fileToUpload']))
{
    $dest = 'images/Uploaded/';
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name']))
        $file = $dest.$_FILES['fileToUpload']['name'];
}

И я хочу, чтобы if $_FILES, если пустой, текущий файл, хранящийся в базе данных, мы просто сохраним его значение при обновлении. Что происходит в моем коде, когда есть уже существующее изображение, и я не нажимаю "Загрузить файл", изображение, которое уже там, исчезает.

Пожалуйста, помогите!

Ответ 1

Если пустые записи файлов, вам нужно получить имя старого файла из вашей базы данных, зависеть от id

if(empty($_FILES)){
    $qry = "select * from tablename where id = ? "; 
                $q = $this->db->conn_id->prepare($qry);
                $q->bindValue(1, $id, PDO::PARAM_INT);
                $q->execute();
                while($rows = $q->fetch(PDO::FETCH_ASSOC) ){
                $filename = $rows['imagename'];
                }
} else {
   $dest = 'images/Uploaded/';
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'],    $dest.$_FILES['fileToUpload']['name']))
        $file = $dest.$_FILES['fileToUpload']['name'];
}

Ответ 2

Если ваш файл не пуст,

if (!empty($_FILES['fileToUpload']))
{
    $dest = 'images/Uploaded/';
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name']))
        $file = $dest.$_FILES['fileToUpload']['name'];
}

else, если ваш файл пуст, что означает условие обновления/редактирования, затем верните его из своего db, относящегося к этому id

    else
    {
// fetch your image from database relevant to that id
    $select=mysql_query(select image from your_table where id='$id');
    $row=mysql_fetch+assoc($select);

      $file=$row['image'];
    }

Ответ 3

вот проблема → if (! empty ($ _ FILES ['fileToUpload'])) вы говорите, что если файл не пуст, сделайте это. что вы хотите сказать, если файл пуст, просто удалите '!' должен работать.

Вы также можете попробовать → $_ FILES ['myVarName'] ['size'] > 0  для проверки размера файла, чтобы увидеть, пуст ли файл.

Ответ 4

Я думаю, что ваш вопрос действительно не отражает вашу проблему? Кажется, у вас на самом деле проблема с источником изображения из базы данных? Помимо кода, который вы предоставили, это мало помогает. возможно, опубликовать код, связанный с активностью базы данных, чтобы мы могли видеть, что не так с обновлением/извлечением данных из базы данных.

Однако исходя из предположений, я попытаюсь ответить на ваш вопрос.

Если никакие другие данные не передаются вместе с запросом, кроме обновления изображения, тогда решение должно быть, переместите ваши запросы к базе данных в блок if. Значение.. не обновлять базу данных, если изображение не загружено.

if (!empty($_FILES['fileToUpload']))
{
    $dest = 'images/Uploaded/';
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name']))
        $file = $dest.$_FILES['fileToUpload']['name'];

    //database update here
}

потому что, если ваши запросы к базе данных происходят вне блока IF, база данных будет обновляться в любом случае, и я предполагаю, что вы передаете переменную $file в запросе. и $file в этом случае будет пустым, так как $file определен только и задано значение в блоке IF.

Я хотел бы помочь вам в дальнейшем, но для этого вам нужно помочь нам с дополнительной информацией, например,

Вы можете поделиться своим кодом (вы можете скрыть конфиденциальные данные)

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

Если да.. у вас есть 2 варианта

1) получите текущий файл пользователя перед обновлением, выбрав его из базы данных, сохраните его в переменной $file до того, как вы указали блок IF. Если условие истинно, переменная $file будет обновлена, если нет, переменная $file будет иметь старое значение, которое вы присвоили ей, который является текущим пользовательским файлом.

2) создать динамический sql-запрос, то есть если пользователь загрузил новую фотографию, добавьте это в запрос, если не добавьте его в запрос и обновите только те поля, которые необходимо обновить. Я не знаком с PDO, но концепция здесь.

Ответ 5

if(strlen($_FILES)<=4){
$qry = "select * from tablename where id = ? "; 
            $q = $this->db->conn_id->prepare($qry);
            $q->bindValue(1, $id, PDO::PARAM_INT);
            $q->execute();
            while($rows = $q->fetch(PDO::FETCH_ASSOC) ){
            $filename = $rows['imagename'];
            }
} else {
   $dest = 'images/Uploaded/';
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'],    $dest.$_FILES['fileToUpload']['name']))
        $file = $dest.$_FILES['fileToUpload']['name'];
}

/* Note : strlen() check if $_FILES have value then it is more then 4 char (3 file extension and 1 dot */ 

Ответ 6

$file = "";

//Run SQL query to update the table fields except file field here

if (!empty($_FILES['fileToUpload']))
{
    $dest = 'images/Uploaded/';
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name']))
    { $file = $dest.$_FILES['fileToUpload']['name']; }
}

if($file!="")
{
    //Query to update file field only
}