我应该从数据库中删除值,但是现在结束,我设法获得的唯一结果是将某个值设置为null,然后此值变得无效,但是如果我想重复该过程,我将无法再做吧。我的目标是从给定事件中自由删除我想要的所有产品,并放置要删除的代码:
<a href="#elimina<?php echo $row['impianto_id_campagna']; ?>" data-toggle="modal" class="btn-floating btn-sm btn-pin "><span class="glyphicon glyphicon-trash"></span> <i class='fa fa-remove' aria-hidden='true'></i></a
模式:
<div class="modal fade" id="elimina<?php echo $row['impianto_id_campagna']; ?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header text-center">
<h4 class="modal-title w-100 font-weight-bold">Elimina Impianto</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<?php
$elimina=mysqli_query($connessione,"select * from campagne_cliente where impianto_id_campagna='".$row['impianto_id_campagna']."'");
$row_due=mysqli_fetch_array($elimina);
?>
<div class="modal-body mx-3">
<h5 style="text-align: center;">Eliminare l'impianto dalla campagna?</h5>
</div>
<div class="modal-footer d-flex justify-content-center">
<a href="eliminainfo.php?impianto_id_campagna=<?php echo $row['impianto_id_campagna']; ?>" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span>Elimina</a>
</div>
</div>
</div>
</div>
delete_page:
<?php
include '../../connessione.php';
$impianto_id_campagna=$_GET['impianto_id_campagna'];
mysqli_query($connessione,"UPDATE campagne_cliente SET impianto_id_campagna = NULL WHERE impianto_id_campagna = '$impianto_id_campagna'");
header('location: campagne.php');
?>
我的数据库结构:my db structure
在图片中,您将看到一个设置为0的值,但是如果以后我想将另一个值设置为0,则无法这样做,最大的做法是从id_impianto_campagna开始删除整个行
答案 0 :(得分:4)
您正在使用UPDATE
查询,而应该使用DELETE
查询。
如果您替换了它,它应该可以工作:
"UPDATE campagne_cliente SET impianto_id_campagna = NULL WHERE
impianto_id_campagna = '$impianto_id_campagna'";
与此:
"DELETE * FROM campagne_cliente WHERE
impianto_id_campagna = '$impianto_id_campagna'"
正如其他用户所说,您的代码可以进行SQL注入,请改用准备好的语句。
// ... Set your connection variables
$conn = new mysqli($host, $user, $password, $database);
// Query
$sql = "DELETE * FROM campagne_cliente WHERE impianto_id_campagna = ?";
$stmt = $conn->prepare($sql);
if(!$stmt) {
// ... Couldn't prepare statment, handle your error
}
$id = $_GET['impianto_id_campagna'];
if(!$stmt->bind_param('i', $id)) {
// ... Couldn't bind parameters, handle your error
}
if(!$stmt->execute()) {
// ... Couldn't execute query, handle your error
} else {
echo 'Record deleted.';
}
答案 1 :(得分:-1)
如果您要删除针对主键的记录,请替换:
"UPDATE campagne_cliente SET impianto_id_campagna = NULL WHERE
impianto_id_campagna = '$impianto_id_campagna'"
具有:
"DELETE FROM campagne_cliente WHERE impianto_id_campagna =
$impianto_id_campagna"
然后再次检查。