【问题标题】:How do I store image sequence changes to a mysql database with php如何使用 php 将图像序列更改存储到 mysql 数据库
【发布时间】:2025-11-25 10:30:01
【问题描述】:

我正在尝试构建照片组织表,并正在寻找有关如何将照片显示序列保存到数据库的建议和/或示例。 我正在使用 php 和 mysql

示例: 如果我在相册中有 10 张照片并决定更改图像顺序,因此我将一张照片从 seq 2 移动到 seq 7,然后顺序更改为以下。

1、2、3、4、5、6、7、8、9、10 原始序列

1, 7, 2, 3, 4, 5, 6, 8, 9, 10 新序列

如何告诉数据库所有受影响行的序列列已更改? ...在一次操作中。

我是否一次更改数据库中的多行?我可以只限制受影响的行吗

photos 表当前有“rowID, sequence, URL....”

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:
    UPDATE table SET display_order = CASE WHEN id=first_id THEN second_order ELSE first_order END WHERE id = first_id OR id = second_id LIMIT 2
    

    如果你有 first_id、first_order、second_id、second_order,这会切换它们的显示顺序。

    【讨论】:

    • first_id, first_order, second_id, second_order 当然应该是php变量。这只是伪代码。
    【解决方案2】:

    您也可以只编写具有 next_image_id 和 previous_image_id 的表,这样插入图像所需要做的就是更改上一个图像 next_image_id 和下一个图像 previous_id 以及相同的图像。

    【讨论】:

      【解决方案3】:

      考虑在数据库中拥有相同的序列,而不是一直更改数据库中的序列来覆盖它,使用 php 随机生成器,如下所示:

      $db=new SQLite3("sqlite.db") or die ("Your Internet Connection Dropped!");
      $select_table = $db->query("SELECT * FROM images"); 
      while($image=$select_table->fetchArray(SQLITE3_ASSOC)){
        echo "<img src='path/to/file/".$image[rand(1,11)].".png'>";
      }
      

      我的代码在安全性方面很差,但它应该可以完成这项工作,希望对您有所帮助!

      【讨论】:

        最近更新 更多