【发布时间】:2017-09-24 11:39:05
【问题描述】:
所以,这里有一个表格,显示 MySQL 数据库中的数据。我在第一行附加了复选框,用于选择要删除的唯一名称。如何使用数组或 PHP 中的任何其他方式从数据库中删除表单中的已检查数据。
这是我的代码,
我的 PHP 脚本来显示数据,
<form method='POST' action='../../panel/delete_others.php'>
<table id='example1' class='table table-bordered table-hover'>
<thead>
<tr>
<th>Mark User </th>
<th>User name</th>
<th>User Password</th>
<th>User Type</th>
<th>User Status</th>
</tr>
</thead>
<tbody>";
while($row = mysqli_fetch_array($result2)){
echo "<tr>
<td> <input type='checkbox' name='others_delete[]' value='".$row['USER_NAME']."'/></td>
<td>".$row['USER_NAME']."</td>
<td>".$row['USER_PASSWORD'].
"</td>
<td>".$row['USER_type']."</td>
<td>".$row['USER_STATUS']."</td>
</tr>";
}
echo "</tbody>
</table>
</form>
我的删除数据的 PHP 脚本,
<?php
include('config.php');
if(isset($_POST['submit'])){//to run PHP script on submit
if(!empty($_POST['others_delete'])){
foreach($_POST['others_delete'] as $selected){
$sql ="DELETE FROM users WHERE USER_NAME='$selected' and USER_type='Others'";
echo $selected;
if(mysqli_query($db, $sql)){
mysqli_query($db, $sql);
}
else{
echo "error: ".$sql. "<br>" . mysqli_error($db);
}
}
}
}
mysqli_close($db);
?>
所以,我编写的代码看起来是正确的,但是每当我点击提交按钮时,我都会得到空白页。
【问题讨论】:
-
您已经在使用支持 prepared statements 的 API 和有界变量输入,您应该使用带占位符的参数化查询(prepared statements)来保护您的数据库免受SQL-injection !开始使用
mysqli::prepare()和mysqli_stmt::bind_param()。 -
如果你得到一个空白页,要么是因为没有条件为真,要么你有一个致命错误。如果是后者,请检查您的日志。如果是第一个,请通过添加
else和一些输出(或记录一些内容)来检查哪些条件失败。 -
空白页最有可能表明存在禁用错误..请启用
error_reporting(E_ALL)和ini_set('display_errors', true); -
好像提交按钮根本不在表单内 - 或者这不是实际代码。
-
@Qirel 可能是由 AJAX 请求触发的。我投票结束了这个问题,因为它不完整。