首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法检查选中了哪个核对表

问无法检查选中了哪个核对表
EN

Stack Overflow用户
提问于 2013-06-29 20:24:37
回答 1查看 64关注 0票数 1

我正在尝试使用复选框项删除多张图片。但不知何故,图片并没有从数据库中删除。

coderuns不会出错。正在重定向页面,但未执行删除查询。

我相信将图片id传递给查询$List[1]是有关系的,但是我真的不能理解what.It,似乎我做了所有的事情。

提前感谢您的帮助。

这就是代码:

代码语言:javascript
复制
<?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> &nbsp;".$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');
    }
  }
?>
EN

回答 1

Stack Overflow用户

发布于 2013-06-29 20:29:29

我的猜测是$List[1]不包含您的picture_id。可能是$List[0]。

使用fetch_array并不是使用SELECT *从数据库获取数据的好方法,因为您的列可能会改变位置,而索引并不能清楚地说明您要检索的是哪一列。

尝试使用fetch_assoc来获取与数据相关联的列名。

代码语言:javascript
复制
<?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> &nbsp;{$List['picture_name']}</span>";
    }
?>

另外,对您的DELETE逻辑尝试以下内容:

使用implode

  • Doing a
  1. 检查是否设置了photoList (与遍历照片列表并将值强制转换为(int)以防止SQL Injection
  2. Concatenating将ID列表转换为逗号分隔的列表,提供照片ID列表-这比遍历和执行多个

语句要快得多

代码:

代码语言:javascript
复制
<?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');
    }
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17380144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档