我的数据库表中有一个名为image的字段,我将图像存储在这个字段中,如(1.jpg、2.jpg、3.jpg、4.jpg)。因此,我必须删除表列中的第二个图像,即2.jpg。
注意:
- 这不是在表的列字段中存储文件名或类似数据的正确方法
- 你应该修改你的帖子,并包含你正在处理的代码
您应该将其存储在image
列中,如下所示:
| image |
| 1.jpg |
| 2.jpg |
| 3.jpg |
| 4.jpg |
不是这样的:
| image |
| 1.jpg,2.jpg,3.jpg,4.jpg |
答案:
但是,如果您对此感到困惑,并且真的只想从给定的字符串中删除2.jpg
,那么您可以使用PHP的explode()
函数。请在此处查看。(请不要被这个代码吓倒。我只是在里面放了一些注释来解释每行的功能):
使用此代码所要做的就是替换正确的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
的列,它的值只有1
或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");