PHP 使用复选框删除多行

标签 php mysql checkbox rows

我正在尝试使用复选框删除多行。但值并没有被删除。 我不明白我哪里错了。 请帮助我。

Connect.php

    <?php
    $host="localhost"; // Host name 
    $username="DB_USERNAME"; // Mysql username 
    $password="DB_PASSWORD"; // Mysql password 
    $db_name="DB_NAME"; // Database name 
    $tbl_name="TABLE_NAME"; // Table name 

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");

    ?>

exe.php

    <?php
    include "connect.php";

    // Check if delete button active, start this 
    if($_POST['delete'])
    {
    $id = $_POST['data'];
    $count = count($id);

    for($i=0;$i<$count;$i++){
    //echo "<br> value = ".$id[$i]."Jumlah = ".$count ;
    $sql = "DELETE FROM $tbl_name WHERE id='$id[$i]'";
    $result = mysql_query($sql);
    }

    // if successful redirect to delete_multiple.php 
    if($result){echo "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">";}
    }
    mysql_close();
    ?>

index.php

    <?php
    include "connect.php";
    $result=mysql_query("SELECT * FROM $tbl_name ORDER BY ts DESC");
    ?>

    <table width="400" border="0" cellspacing="1" cellpadding="0">
    <tr>
    <td><form name="form1" method="post" action="exe.php">
    <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
    <tr>
    <td bgcolor="#FFFFFF"> </td>
    <td colspan="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#FFFFFF">#</td>
    <td align="center" bgcolor="#FFFFFF"><strong>Order Id</strong></td>
    <td align="center" bgcolor="#FFFFFF"><strong>Username</strong></td>
    <td align="center" bgcolor="#FFFFFF"><strong>Link</strong></td>
    <td align="center" bgcolor="#FFFFFF"><strong>Type</strong></td>
    </tr>

    <?php
    while($rows=mysql_fetch_array($result)){
    ?>

    <tr>
    <td align="center" bgcolor="#FFFFFF"><input name="data[]" type="checkbox" id="data" value="<?php echo $rows['oid']; ?>">
    </td>
    <td bgcolor="#FFFFFF"><?php echo $rows['oid']; ?></td>
    <td bgcolor="#FFFFFF"><?php echo $rows['user']; ?></td>
    <td bgcolor="#FFFFFF"><?php echo $rows['data']; ?></td>
    <td bgcolor="#FFFFFF"><?php echo $rows['type']; ?></td>
    </tr>

    <?php
    }unset($rows);
    ?>

    <tr>
    <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete">
    </td>
    </tr>
    </table>
    </form>
    </td>
    </tr>
    </table>

请有人帮我解决这个问题并告诉我哪里错了。我还在学习 PHP。

最佳答案

您可以只使用内置的 SQL WHERE IN 子句,而不是使用循环运行多个 SQL 查询:

$ids = join(',',$id);  //same as using implode()

$sql = "DELETE FROM $tbl_name WHERE id IN '$ids'";

效率会更高!

希望这有帮助!

关于PHP 使用复选框删除多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21356382/

相关文章:

php - FOSElasticaBundle一起共享映射类型

Mysql 查询在 laravel 中不起作用

php - 在mysql中选择一个数组,其中等于id数组

ruby-on-rails - Rails 复选框和参数

php - 使用 PHP 多维数组查找并更新值

php - 如何包含css取决于运行环境

javascript - 在 Javascript 中制作并行的复选框列表

php - 在 PHP 中提取 JQuery POST 参数

java - 从 Android 模拟器连接到 LocalHost/10.0.2.2 超时

mysql - 分层 MariaDB/MySQL 递归查询(仅限父级)