Php 删除链接不删除mysql数据库中的任何记录

Php 删除链接不删除mysql数据库中的任何记录,php,html,mysql,sql,pdo,Php,Html,Mysql,Sql,Pdo,我正在尝试向页面上显示的每一行记录添加删除链接。到目前为止,我已经设法做到了这一点,但无法弄清楚如何使链接工作,以便在单击删除链接时,仅从数据库中删除该行数据。我对php/mysql非常陌生,所以请原谅我的问题。到目前为止,我有以下代码 <?php require("common.php"); if(empty($_SESSION['user'])) { header("Location: index.php"); die("Redirecting to index.php");

我正在尝试向页面上显示的每一行记录添加删除链接。到目前为止,我已经设法做到了这一点,但无法弄清楚如何使链接工作,以便在单击删除链接时,仅从数据库中删除该行数据。我对php/mysql非常陌生,所以请原谅我的问题。到目前为止,我有以下代码

<?php
require("common.php");

if(empty($_SESSION['user'])) 
{ 
header("Location: index.php"); 

die("Redirecting to index.php");
}

$result = $db->prepare("SELECT * FROM compliance_requirement");
$result->execute();

?>


<div class="compTable">
<table >
<tr>
<th>Compliance Name</th><th>Compliance Goal</th><th>Compliance Description</th>  <th>Options</th>
</tr>

<?php while($row = $result->fetch(PDO::FETCH_ASSOC)){ ?>
<tr>

<td style='width: 200px;'><?php echo $row['ComplianceName']; ?></td>
<td style='width: 150px;'><?php echo $row['ComplianceGoal']; ?></td>
<td style='width: 400px;'><?php echo $row['ComplianceDescription']; ?></td>

<td style ='width: 250px;' ><?php echo '<a href="delete.php?action=delete&id=delete'.$row['ComplianceName'].'">Delete</a>';?>   

</td>
</tr>
<?php } 
?> 
</table>
</div>

合规性名称合规性目标合规性描述选项
。。然后在我的delete.php文件中,我有以下代码:

<?php
require ('common.php');

if( isset($_GET['delete']) )
{
$id = $_GET['delete'];
$sql= $db->prepare("DELETE FROM compliance_requirement WHERE ComplianceName='$id'");
$sql->execute();
echo "<meta http-equiv='refresh' content='0;url=compliance.php'>";
}
?>

您的
a href
标记应该是[错过的引号]


我发现在构建动态链接时,最好先创建url(您可以在测试过程中回显它)。这避免了引用的混乱。该url在链接中很容易使用

<?php 
   while($row = $result->fetch(PDO::FETCH_ASSOC)){ 
     $url = "delete.php?action=delete&id=".$row['ComplianceName'];
     //echo $url;
?>
<tr>
  <td style='width: 200px;'><?php echo $row['ComplianceName']; ?></td>
  <td style='width: 150px;'><?php echo $row['ComplianceGoal']; ?></td>
  <td style='width: 400px;'><?php echo $row['ComplianceDescription']; ?></td>
  <td style ='width: 250px;' ><?php echo '<a href ='.$url.'>' ?> Delete </a>


您是否已验证错误报告已打开?请查看SQL注入以及为什么这样做非常危险。您正在查看是否设置了
$\u GET['del']
。但这不是HTML传递的参数。您的代码只有在设置了该参数的情况下才会执行某些操作-如果缺少该参数,则不会执行任何代码。将“$id”更改为占位符(?),然后通过execute->execute(数组($id))传递$id;否则可用于sql注入不会解决您手头上的问题,但您需要解决这些问题。
还要注意“语句上的双引号。echo”值:$foo”与echo值:$foo';只有第一个有效。@saint熟悉这样的工具吗?这仍然不起作用。或者使用大括号,如
&id={$row['ComplianceName']}“或删除单个引号:<代码>和ID= $ROL[从属文件名] < /代码>:)谢谢评论。我做了建议的更改,但仍然出现了空白页和消息:{$Le[从属名称]。在本地主机中。可能是它根本没有连接到我的delete.php吗??thanks@ficuscr..不,我以前没有用过firebug。现在只是在谷歌上搜索一下。你会推荐一些东西吗???@saint是的!或者是Chrome的开发者工具(F12)。一旦你开始使用它,你会想知道没有它你是如何生活的。例如,在这里,检查你生成的id/姓名标记比查看页面源代码更容易。还有Xhr帖子之类的东西,更容易检查。真的有很多有用的功能。谢谢你的帮助。你知道我如何twick delete.php代码,使它实际运行吗是否删除并更新所选行?
<?php 
   while($row = $result->fetch(PDO::FETCH_ASSOC)){ 
     $url = "delete.php?action=delete&id=".$row['ComplianceName'];
     //echo $url;
?>
<tr>
  <td style='width: 200px;'><?php echo $row['ComplianceName']; ?></td>
  <td style='width: 150px;'><?php echo $row['ComplianceGoal']; ?></td>
  <td style='width: 400px;'><?php echo $row['ComplianceDescription']; ?></td>
  <td style ='width: 250px;' ><?php echo '<a href ='.$url.'>' ?> Delete </a>
<td style ='width: 250px;' ><a href =delete.php?action=delete&id=name1> Delete </a>