我正在尝试通过选中一个复选框并点击提交按钮来添加删除mysql表行的功能。无法弄清楚这里出了什么问题,并希望有人可以帮助我...
更新:以下内容现在正在运行,但不使用下面建议的预准备语句(仍需要学习如何操作)。
<table border="1" cellspacing="0" cellpadding="2" >
<thead>
<tr>
<th> Delete </th>
<th> Column 1 </th>
<th> Column 2 </th>
<th> Column 3 </th>
<th> Form URL </th>
</tr>
</thead>
<tbody>
<?php
include('connect.php');
$result = $db->prepare("SELECT * FROM campaigns ORDER BY ID ASC");
$result->execute();
for($i=0; $row = $result->fetch(); $i++){
?>
<tr class="record">
<form method="post">
<td><input name="checkbox[]" type="checkbox" value="<?php echo $row['ID']; ?>"></td>
<td><?php echo $row['camp']; ?></td>
<td><?php echo $row['code']; ?></td>
<td><?php echo $row['value']; ?></td>
<td><?php echo $row['address']; ?></td>
<td><a href="editform.php?id=<?php echo $row['ID']; ?>"> edit </a></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5"><input name="delete" type="submit" id="delete" value="Delete Campaign"></td>
</form>
</tr>
</tbody>
</table>
<?php
// Check if delete button active, start this
if(isset($_POST['delete']))
{
$checkbox = $_POST['checkbox'];
for($i=0;$i<count($checkbox);$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM campaigns WHERE ID=$del_id";
$result=$db->query($sql);
}
// if successful redirect
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">";
}
}
?>
答案 0 :(得分:1)
您收到的错误消息说明了一切。
mysqli_query
的第一个参数是连接的资源。第二个是查询。我假设在表单上方的某处是实际连接到MySQL服务器的PHP代码?
查看mysqli_query
----忽略那个----
实际上,您似乎试图在代码开头使用对象方式然后降低功能。
更改DELETE...
查询以使用预准备语句,以便清理数据。之后,执行查询并检查错误。如果您的表是基于事务的,请将您的查询包装在事务中并检查错误,以便在需要时可以回滚。
总结一下:
mysqli
功能。答案 1 :(得分:0)
ID='$del_id'
您的ID字段是字符串值吗?如果没有,可能删除''将修复它。 你也可以这样做
foreach($checkbox as $del_id => $value)
而不是
for($i=0;$i<count($checkbox);$i++){
$del_id = $checkbox[$i];
答案 2 :(得分:0)
将您的代码包装在表单标记
中<form method="post"></form>
提示:安排代码,获取PHP代码
答案 3 :(得分:0)
试一试
$result = mysqli_query($con,$sql);