【问题标题】:iPhone photo uploads overwrite each other in galleryiPhone 照片上传在图库中相互覆盖
【发布时间】:2015-10-10 16:07:09
【问题描述】:

我有一个图片库,用户可以在其中将手机中的图片上传到数据库中,然后将其调用到我的图库页面。每个条目在数据库中都有一个 ID、一个图像和一个描述。

这是导出图库的代码:

    //include database connection
    include 'mysqlconnect.php';

    $sql="select * from images order by image desc";
    $query=mysql_query($sql);
    while($row=mysql_fetch_array($query))
    {
        $image=$row ['image'];
        $description=$row ['description'];    

        //call all images from DB
        echo '<a href="'.$image.'" title="'.$description.'" style="background-image:url('.$image.');"></a>'; 
    } 

问题是当用户使用 iPhone 上传照片时。因为 iPhone 总是将其图像保存为“image.jpg”,所以每次上传时都会覆盖图库中以前的 iPhone 图像。我认为这是因为画廊只需要文件名。

有没有办法根据行 ID 调用图像? $image=$row['id','image']; 之类的东西?

【问题讨论】:

    标签: php mysql image-gallery


    【解决方案1】:

    首先,如果上传了相同的图像名称,而您没有准备好重命名它或使用独特的文件夹将它们用作唯一,那么这就是一个问题。

    如果您想根据 ID 查看照片,请在查询中使用它。

    即:

    $sql="select * from images WHERE id='some_id' order by image desc";
    

    “有没有办法根据行 ID 调用图像?像 $image=$row['id','image']; 之类的东西?”

    不,那是无效的语法:

    $image=$row['id','image'];
    

    您需要使用两个单独的$row(s)

    即:

    $id = $row['id'];
    $image=$row['image'];
    

    旁注:您甚至可能不需要使用WHERE 子句,只需使用$row['id']

    但是,如果您设置为仅基于特定用户显示图像,那么可以;使用WHERE 子句,甚至使用基于会话用户名的会话。

    重命名上传的文件:

    关于如何在上传时使用唯一名称,请参阅以下内容:

    您还使用了已弃用的 MySQL 库。最好转移到 mysqli_ 或 PDO,因为它将从未来的 PHP 版本中删除。

    参考资料:

    【讨论】:

    • 非常感谢您提供的信息。数据库不是我的强项……所以,在我的数据库中,我有一个自动递增的 ID。只是为了验证,您是说不可能说“从 ID #1 显示 image.jpg,从 ID #2 显示 image.jpg 等”。不重命名上传的文件或将它们放入文件夹?
    • @PaulRuocco 不客气。不,因为您只会显示相同的图像,除非那是您想要做的。如果不是,那么您上传的文件将需要使用唯一名称重命名,并使用该名称并根据上传文件的用户/ID 保存到数据库中。
    猜你喜欢
    • 1970-01-01
    • 2015-04-24
    • 2012-12-06
    • 1970-01-01
    • 2014-08-05
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多