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

时间:2015-02-10 07:35:00

标签: php mysql

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

2 个答案:

答案 0 :(得分:0)

注意:

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

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

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

不喜欢这样:

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

答案:

但是如果您坚持使用它并且只是想从给定字符串中删除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 */

建议:

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

DELETE FROM yourTableName WHERE image = '2.jpg'

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

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

答案 1 :(得分: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");