gpt4 book ai didi

php - 使用复选框从表中删除多条记录(行)

转载 作者:行者123 更新时间:2023-11-29 09:04:03 25 4
gpt4 key购买 nike

尝试使用复选框删除多行。首先,我生成带有复选框列的目录。然后将数据发布到php端。问题是,php端返回到当前页面。这意味着一切都成功完成并且页面返回给用户。但没有成功。 php日志没有错误,MySQL有问题。我试过print_r ($_POST['checkbox']); die();之后$delete=$_POST['delete']; 。它给了我类似的结果 Array ( [0] => on [1] => on )我的代码有什么问题吗?

我的 HTML 标记看起来像这样

<?php
$result = $db->query("SELECT id, name, showinmenu FROM menu") ;
$num=$result->num_rows;
if ($num>0) {
?>
<form method="post" action="processor/dbdel.php">
<div style="overflow-y: auto; overflow-x: hidden; height:500px">
<table id="list" class="features-table">
<thead>
<tr>
<th>#</th>
<th style="min-width:80px;" class="name">Ad (menyuda işlənən)</th>
<th>Sil</th>
</tr>
</thead>
<tbody>
<?
while ($row = $result->fetch_object()) {
echo '<tr>
<td>'.$row->id.'</td>
<td><a href="'.$wsurl.'admin/?page=edit&id='.$row->id.'">'.$row->name.'</a></td>
<td><input type="checkbox" name="checkbox[]" method="post" value"'.$row->id.'" id="checkbox[]" "/></td>
</tr>';
}

// when the loop is complete, close off the list.
echo "</tbody> <tr id='noresults'>
<td style='text-align:center' colspan='9'>Nəticə yoxdur</td>
</tr></table>
</div>
<p style='text-align:center;'>
<input id='delete' type='submit' name='delete' value='Seçilənləri sil'/> </p>
</form>";
}
?>

这是我的 PHP 代码

<?php
require '../../core/includes/common.php';
$delete=$_POST['delete'];
if($delete) // from button name="delete"
{
if (is_array($_POST['checkbox']))
foreach($_POST['checkbox'] as $del_id) {
$del_id = (int)$del_id;
$result=$db->query ("DELETE FROM menu WHERE id = '$del_id'") or die($db->error);
$result2=$db->query ("DELETE FROM pages WHERE id = '$del_id'") or die($db->error);
}
if($result2)
{
header("location:".$wsurl."admin/?page=db");
}
else
{
echo "Error: ".$db->error;
}
}

?>

最佳答案

你的代码绝对是一场灾难。

1) 使用 echo 和重复的字符串连接来输出 html。查找HEREDOC s、双引号字符串,或者只是突破 PHP 模式 (?>) 来输出 html。

2) 通过查找表单字段来检查 POST。如果您想确保处于 POST 情况,请改为执行 if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... } 。这是 100% 可靠的,并且不依赖于特定表单字段的存在(或不存在)。如果数据是通过邮寄提交的,则此语句将始终评估为 true。

3) 您盲目地将用户提供的数据嵌入到 SQL 查询字符串中。了解 SQL injection attacks ,然后考虑如果有人破解您的表单并提交复选框值 ' 或 1' 会发生什么 - 告别您的复选框表的内容。

4) 您的复选框输出行中似乎有一个杂散的 ":

[...snip...] method="post" value"'.$row->id.'" id="checkbox[]" "/></td>
^--here

这几乎肯定会“破坏”您的表单并导致后续标签属性被误解。

5)从好的方面来说,我必须给你这么多 - 你至少要检查两个删除查询的查询错误,这总是很高兴看到。然而,在众多的负面因素中,这只是一个小小的优点。

关于php - 使用复选框从表中删除多条记录(行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com