【问题标题】:delete from MySQL database using checkboxes使用复选框从 MySQL 数据库中删除
【发布时间】:2017-11-26 18:12:45
【问题描述】:

我正在尝试从包含从 MySQL 表生成的数据的表中删除一行。我看了一下这两个问题: 1.如何使用复选框删除数据库结果行 2. 使用复选框、PHP 和 MySQL 删除多行。

我需要使用复选框删除代码的帮助..

<?php

$sql = mysqli_query($conn, "SELECT * FROM leads ORDER BY lid ASC");
if(mysqli_num_rows($sql) == 0){
   echo '<tr><td colspan="8">No Data Entry</td></tr>';
}else{
    while($row = mysqli_fetch_assoc($sql)){
        echo '<tr>
                <td> <input name"checkbox[]" value"'.$row['lid'].'" type="checkbox"></td>
                <td>'.$row['name'].'</td>
                <td>'.$row['sex'].'</td>
                <td>'.$row['phone'].'</td>
                <td>'.$row['company'].'</td>
                <td>'.$row['vehicle'].'</td>
            </tr>';
        }
    }?>

取消

 <?php

   $del_lid = $_POST['checkbox']; 
   if (isset($_POST['submit'])) {
     foreach($del_lid as $value){
       $sql = "DELETE FROM leads WHERE lid='".$value."'";
       $result = mysqli_query($conn, $sql);
    }
 }
?>

【问题讨论】:

  • 感谢任何帮助或建议。谢谢……
  • 缺少来自value"'.$row['lid'].'"的等号
  • 你面临的问题在哪里?
  • 谢谢你们的回复,我真的是 php 编码的新手@JYoThl 我的问题是执行删除语句。

标签: php checkbox mysqli


【解决方案1】:

复选框缺少等号,因此实际上它们都没有值。可以简化 sql 以使用 in 运算符而不是循环。

    <table>
<?php

    $sql = mysqli_query($conn, "SELECT * FROM leads ORDER BY lid ASC");
    if( mysqli_num_rows($sql) == 0 ){
        echo '<tr><td colspan="8">No Data Entry</td></tr>';
    }else{
        while($row = mysqli_fetch_assoc($sql)){
            echo '
            <tr>
                <td> <input name="checkbox[]" value="'.$row['lid'].'" type="checkbox"></td>
                <td>'.$row['name'].'</td>
                <td>'.$row['sex'].'</td>
                <td>'.$row['phone'].'</td>
                <td>'.$row['company'].'</td>
                <td>'.$row['vehicle'].'</td>
            </tr>';
        }
    }
?>
        </table>
        <input type="submit" name="delete" class="btn btn-sm btn-primary" value="delete">
        <a href="index.php" class="btn btn-sm btn-danger">Cancel</a></td>
    </form>
</div>
<?php

    $del_lid = $_POST['checkbox']; 

    if ( isset($_POST['submit'] ) ) {
        $sql='delete from `leads` where `lid` in ( ' . implode( ',', $del_lid ). ' )';
        $result = mysqli_query($conn, $sql);
    }
?>

【讨论】:

  • 使用SQL注入保护怎么样:$del_lid = array_map('intval',$_POST['checkbox']);
  • 是的 - SQL 注入是一个问题 - 准备好的语句会好得多,但 array_map 函数调用很好!
  • 你好 Ram 我仍然收到错误通知:未定义索引:C:\xampp\htdocs\mysqlicrud\leads.php 中的复选框在第 49 行这一行 => $del_lid = $_POST['checkbox' ];
  • name之后缺少等号
  • 非常感谢你们,我得到了答案,我错过了 if ( isset($_POST['submit'] ) ) 假设是 if ( isset($_POST['delete'] ) ) 对不起我不好,但再次感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2017-08-19
  • 2014-07-18
  • 2012-02-10
  • 2014-05-27
  • 1970-01-01
  • 2015-11-13
相关资源
最近更新 更多