删除数据库中的值-PHP

时间:2018-11-03 20:35:47

标签: php mysql

我应该从数据库中删除值,但是现在结束,我设法获得的唯一结果是将某个值设置为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">&times;</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开始删除整个行

2 个答案:

答案 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"

然后再次检查。