我的数据库表中有一个名为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()
函数。检查它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
的列,它只有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");