从数据库中获取img源代码

时间:2015-05-22 08:40:09

标签: php

我正在努力更新数据库中的数据,这是我的问题:

以下是代码:

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

我希望如果$_FILES如果为空,那么当我更新时,存储在数据库中的当前文件将保留它的值。在我的代码中发生的情况是,当已经存在现有图像并且我没有单击上传文件时,已经存在的图像就会消失。

请帮忙!

6 个答案:

答案 0 :(得分: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'];
}

答案 1 :(得分:0)

如果您的文件不为空,那么

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

否则,如果您的文件为空,这意味着在更新/编辑条件下,则从与该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'];
    }

答案 2 :(得分:0)

这是问题 - > if(!empty($ _ FILES ['fileToUpload'])) 你是说如果文件不是空的话就这样做。 如果文件为空你想说的话这就是删除'!'应该工作。

您也可以尝试 - > $ _ FILES ['myVarName'] ['size']> 0  检查文件的大小以查看文件是否为空。

答案 3 :(得分:0)

我认为你的问题并没有真正反映你的问题?您似乎从数据库中获取图像源时遇到问题?除了你提供的代码并没有多大帮助。也许发布与数据库活动相关的代码,这样我们就可以看到更新/从数据库中获取数据有什么问题。

然而,基于假设,我会尝试回答你的问题。

如果除了图像更新之外没有其他数据与请求一起传递,那么解决方案应该是,将数据库查询移动到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块中给出一个值。

我很乐意为您提供进一步的帮助,但为此,您需要帮助我们提供更多信息,例如

您可以共享更多代码(可以隐藏敏感数据)

是否有其他数据与上传一起发送,您可能需要更新数据库中的用户数据,但保持图像不变?

如果是这样......你有两个选择

1)通过从数据库中选择更新之前获取当前用户文件,将其存储在您声明的IF块之前的$ file变量中。如果条件为真,则$ file变量将被更新,否则,$ file变量将具有您为其分配的旧值,即当前用户文件。

2)创建动态sql查询,这意味着如果用户上传了新照片,则将其添加到查询中,如果没有将其添加到查询中,则只更新需要更新的字段。我不熟悉PDO,但概念就在这里。

答案 4 :(得分:0)

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 */ 

答案 5 :(得分:0)

$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
}