PHP获取要删除的自动sql数据

PHP获取要删除的自动sql数据,php,mysql,Php,Mysql,我被要求创建一个基于PHP和mySQL的时间表 我已经创建了一个页面来插入数据,另一个页面来显示数据和编辑/删除显示的数据 以下是显示数据和编辑/删除数据的页面: <?php while($info = mysql_fetch_array( $data )) { ?> <tr> <td> <input type="checkbox" name="job" id="<?php echo $info['job_code']?>"

我被要求创建一个基于PHP和mySQL的时间表

我已经创建了一个页面来插入数据,另一个页面来显示数据和编辑/删除显示的数据

以下是显示数据和编辑/删除数据的页面:

<?php
    while($info = mysql_fetch_array( $data )) {
?>
<tr>
    <td> <input type="checkbox" name="job" id="<?php echo $info['job_code']?>" value="<?php echo $info['job_code']?>" /></td>
    <td><?php echo $info['job_code'] ?></td>
    <td><?php echo $info['job_desc'] ?> </td>
    <td><?php echo $info['job_client'] ?> </td>
    <td><?php echo $info['job_year'] ?> </td>
    <td><?php echo $info['job_month']?> </td>
    <td><?php echo $info['job_date']?> </td>
    <td><?php echo $info['job_category']?> </td>
    <td>EDIT</td>
    <td>DELETE</td>
</tr>
<?php } ?>
据我所知,第2页中的job[]变量没有捕获第1页中用户提交的复选框,或者第一页没有发送数据,因为复选框值可能是我写错的

编辑:我找到了答案,下面是正确的代码:

在第1页

<td>
    <input type="checkbox" name="<?php echo $info['job_code']?>"
           id="<?php echo $info['job_code']?>"
           value="<?php echo $info['job_code']?>"/>
</td>
<td><?php echo $info['job_code'] ?></td>
<td><?php echo $info['job_desc'] ?> </td>
<td><?php echo $info['job_client'] ?> </td>
<td><?php echo $info['job_year'] ?> </td>
<td><?php echo $info['job_month']?> </td>
<td><?php echo $info['job_date']?> </td>
<td><?php echo $info['job_category']?> </td>
感谢所有试图帮助或阅读它的人

change$job\u code\u query=$\u POST['job[]”;to$job_code_query=$_POST['job']

但这将导致另一个问题,因为$job_code_query是一个数组,所以您无法将数组发送到查询$admin_sql=DELETE FROM jobs,其中job_code='$job_code_query'

在将数组添加到查询中之前,必须修复上述定义并将其转换为字符串

您的代码将是:

$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    $admin_data_query = mysql_query("SELECT * FROM jobs")or die(mysql_error());
    $job_code_query = $_POST['job'];
    $job_code_query_items = 'IN ( ';
    foreach ($job_code_query as $key => $value) {
        $job_code_query_items .= ($key>0?", '".$value."'":"'".$value."'");
    }
    $job_code_query_items .= ' );';
    while ($admin_data = mysql_fetch_array($admin_data_query)) {
        if (isset($_POST['job_code'])) {
            $admin_sql ="DELETE FROM jobs WHERE job_code $job_code_query_items";
            $admin_query = mysql_query($admin_sql) or die(mysql_error());
            $this->messages[] = "Job deleted.";
        } else {
            $this->messages[] = "Failed to delete job.";
        }
    }

用那一行替换你的第29行

$job_code_query = $_POST['job'];
您还应该使用PDO或MySQLi,而不是mysql_*函数,这些函数现在已不推荐使用。
使用MySQLi连接时,必须使用$dbconnection->query$sqlquery和no-mysql\u query

如果只有一个复选框,则不要将其设置为数组,只需键入name=job即可。您可以始终使用isset来检查是否设置了Ckbos并将其取值,但我将复选框的名称设置为单个值而不是数组将执行以下操作:如果列出了许多作业,并且我希望在选中多个复选框时删除它们?我已经尝试了MaveRick发布的答案和您的建议,不再有错误,但我的作业没有删除/仍然列出。如果您发送查询时没有使用此变量,这将删除整个表作业您需要删除的内容以明确我的回答我已经按照您的建议进行了操作,但该作业仍然列在数据库中。我仍然对如何将数组转换为字符串感到困惑。你能提供更多的信息吗?谢谢大家!$job_code_query是一个数组,意味着它有许多值,您需要一次删除多行直到这个数组的这些值吗?是的,基本上就像电子邮件收件箱中的复选框一样,我想一次删除多行。我已将代码更改为您的,但它仍然没有删除数据库中的数据。谢谢你到现在为止的帮助!你认为问题出在我试图在第一页提交工作数据列表时吗?
$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    $admin_data_query = mysql_query("SELECT * FROM jobs")or die(mysql_error());
    $job_code_query = $_POST['job'];
    $job_code_query_items = 'IN ( ';
    foreach ($job_code_query as $key => $value) {
        $job_code_query_items .= ($key>0?", '".$value."'":"'".$value."'");
    }
    $job_code_query_items .= ' );';
    while ($admin_data = mysql_fetch_array($admin_data_query)) {
        if (isset($_POST['job_code'])) {
            $admin_sql ="DELETE FROM jobs WHERE job_code $job_code_query_items";
            $admin_query = mysql_query($admin_sql) or die(mysql_error());
            $this->messages[] = "Job deleted.";
        } else {
            $this->messages[] = "Failed to delete job.";
        }
    }
$job_code_query = $_POST['job'];