从表中删除不会删除行

时间:2019-12-19 08:18:00

标签: php html mysql sql sql-delete

免责声明:我知道SQL注入,首先要完成该功能。

我的“从...删除”按钮似乎没有删除我的SQL表中的行

products-one-time.php 1

这是我的foreach的输出,“删除”按钮下面的数字是组ID,只是为了表明它们是唯一的。

这是删除按钮的代码,单击后重定向到 clinics_buttons.vc.php

  <a href="clinics_buttons.vc.php<?php echo '?delete-coupongroup='.$rowCouponGroup['groupid']; ?>" onclick="return confirm('Delete this group?');">
    <button class="btn btn-danger btn-sm full_width" data-toggle="modal">
      <i class="fa fa-edit"></i>DELETE
    </button>
  </a>
  <?php echo $rowCouponGroup['groupid']; ?>

clinics_buttons.vc.php

<?php
session_start();

$routePath = "../";
require_once($routePath . "_config/db.php");
  $dbConfig = new config_db();
  $db = $dbConfig->init();

$delete_coupongroup = $_GET['delete-coupongroup'];

if (isset($_GET['delete-coupongroup'])) {
  $stmt = $db->prepare("DELETE FROM `product_onetime` WHERE groupid = $delete_coupongroup");
  $stmt->execute();
  header('Location: ' . $_SERVER['HTTP_REFERER']);
  }

?>

这是product_onetime表

2

我看到的是我的代码似乎已连接在一起,但是删除按钮不起作用。我尝试在phpmyadmin中手动执行SQL,例如:

DELETE FROM `product_onetime` WHERE groupid = 5

手动执行此操作,但php / sql无效。想要一些输入。

2 个答案:

答案 0 :(得分:0)

我的猜测是文件clinics_buttons.vc.php根本没有执行,因为我们在问题中看到的代码在<form>内部。在这种情况下,按钮行为将覆盖链接行为,浏览器将提交表单,而不是跟随链接。

您应该能够在浏览器的开发工具的“网络”标签中看到它。

作为快速解决方案,请将按钮从“提交”按钮更改为“按钮”:

<button type="button" class="btn btn-danger btn-sm full_width" data-toggle="modal">
  <i class="fa fa-edit"></i>DELETE
</button>

更好的解决方案是根本不使用按钮。只需使用CSS样式使链接看起来像一个按钮即可。或者,也可以从外部表单标签外部删除代码,然后使用cliparts_buttons.vc.php作为表单操作为其提供自己的表单。

答案 1 :(得分:-1)

我可以想象您的问题是您的查询。

$stmt = $db->prepare("DELETE FROM `product_onetime` WHERE groupid = $delete_coupongroup");

您正在使用准备好的stmts,这意味着您不能仅仅将您的值传递到准备好的stmt中,因为使用p.stmts意味着您的查询已在服务器上执行。现在,服务器将丢失参数。 你要做的就是这样。

 $stmt = $db->prepare("DELETE FROM product_onetime WHERE groupid = ?"); 
 $bind = $stmt->bind_param('i', $delete_coupongroup);
 $exec = $stmt->execute();

请记住不要使用'product_onetime',您可以将其写到字符串中而不用引号

希望这有帮助=)

相关问题