如何在php mysql中删除逗号分隔值

问题描述 投票:-1回答:2

我的数据库表中有一个名为image的字段,我将图像存储在此字段中,如(1.jpg,2.jpg,3.jpg,4.jpg)。所以我必须删除表格列中的第二个图像,即2.jpg。

php mysql
2个回答
0
投票

Note:

  • 这不是在表格的列字段中存储文件名或数据的正确方法。
  • 您应修复帖子并包含您正在处理的代码。

您应该将它存储在image列中,如下所示:

| image |
| 1.jpg |
| 2.jpg |
| 3.jpg |
| 4.jpg |

不是这样的:

| image                   |
| 1.jpg,2.jpg,3.jpg,4.jpg |

Answer:

但是如果你坚持这个并且真的只想从给定的字符串中删除2.jpg,你可以使用PHP的explode()函数。检查它here。 (请不要被这段代码吓倒。我只是在里面写一些注释来解释每一行的功能):

您只需要替换正确的table名称,column名称和variable(如有必要)。

if(isset($_REQUEST['id'])){

  $userDelete = $_REQUEST['val'];
  $newString = "";
  $rs = mysqli_query($YourDBConnection,"SELECT id, data FROM arr");
    while($row = mysqli_fetch_array($rs)){
      $id = $row["id"];
      $data = $row["data"];
      $exploded = explode(",",$data);
      $counter = count($exploded);
        for($x = 0; $x<$counter; $x++){ /* THIS LOOP WILL REMOVE THE REQUESTED DATA TO REMOVE */

          if($userDelete != $exploded[$x]){

            $newString = $newString.",".$exploded[$x];

          } /* END OF IF THE REQUESTED TO DELETE IS NOT THE SAME WITH EXPLODED DATA */

        } /* END OF FOR LOOP */

    mysqli_query($YourDBConnection,"UPDATE arr SET data = '$newString' WHERE id='$id'");

    } /* END OF WHILE LOOP */

} /* END OF ISSET REQUEST ID */

Recommendation:

如果您在列字段中正确插入它,则可以使用DELETE query从数据库中删除2.jpg

DELETE FROM yourTableName WHERE image = '2.jpg'

但它会永久删除数据库中的数据。我建议添加另一个列来说明该图片的操作,如果它将被隐藏或将显示在前端。

例如,我们有一个名为action的列,它只有10的值。 1触发显示图像,0隐藏图像。


0
投票

您需要从数据库表中选择image列,然后您需要编写以下脚本:

$oldimages = '1.jpg,2.jpg,3.jpg,4.jpg';
$replaceImage = '2.jpg';
$newImages = str_replace($replaceImage.",", "", $oldimages);
// then write update query.
mysqli_query($conn,"UPDATE images SET images = '$newImages' WHERE id=$pid");
© www.soinside.com 2019 - 2024. All rights reserved.