我正在尝试使用复选框项删除多张图片。但不知何故,图片并没有从数据库中删除。
coderuns不会出错。正在重定向页面,但未执行删除查询。
我相信将图片id传递给查询$List[1]是有关系的,但是我真的不能理解what.It,似乎我做了所有的事情。
提前感谢您的帮助。
这就是代码:
<?php
$Connection = mysql_connect( $Host, $User, $Pass ) or die('ERROR: '.mysql_error());
mysql_select_db( $DataBase )or die('ERROR: '.mysql_error());
$Query = "SELECT * FROM pictures WHERE folder_id = ".$FolId.";";
$Picture = mysql_query($Query, $Connection)or die('ERROR: '.mysql_error());
?>
<form name='Photos' method='POST' >
<?php
while($List = mysql_fetch_array($Picture)){
echo "<input type='checkbox' name='photoList[]' value='".$List[1]."'> <span> ".$List[4]."</span>";
}
?>
<input type='submit' name='Delit' value='DELETE' >
</form>
<?php
if(isset($_POST['Delit'])){
foreach($_POST['photoList'] as $item){
$Query="DELETE FROM pictures WHERE picture_id =".$item;
mysql_query($Query, $Connection)or die("ERROR: ".mysql_error());
header('Location: photos.php');
}
}
?>发布于 2013-06-29 20:29:29
我的猜测是$List[1]不包含您的picture_id。可能是$List[0]。
使用fetch_array并不是使用SELECT *从数据库获取数据的好方法,因为您的列可能会改变位置,而索引并不能清楚地说明您要检索的是哪一列。
尝试使用fetch_assoc来获取与数据相关联的列名。
<?php
// Change `picture_name` below to the name of the column storing your picture's name
while ($List = mysql_fetch_assoc($Picture)) {
echo "<input type='checkbox' name='photoList[]' value='{$List['picture_id']}'> <span> {$List['picture_name']}</span>";
}
?>另外,对您的DELETE逻辑尝试以下内容:
使用implode
photoList (与遍历照片列表并将值强制转换为(int)以防止SQL Injection语句要快得多
代码:
<?php
if (isset($_POST['photoList']) && !empty($_POST['photoList'])) {
$photoIds = array();
foreach ($_POST['photoList'] as $photoId) {
$photoIds[] = (int) $photoId;
}
$photoIds = implode(',', $photoIds);
$Query = "DELETE FROM pictures WHERE picture_id IN ({$photoIds})";
mysql_query($Query, $Connection)or die("ERROR: ".mysql_error());
header('Location: photos.php');
}
?>https://stackoverflow.com/questions/17380144
复制相似问题