【发布时间】:2013-11-12 20:07:12
【问题描述】:
我正在尝试将删除链接添加到页面上显示的每一行记录。到目前为止,我已经做到了这一点,但无法弄清楚如何使链接工作,以便在单击删除链接时,只会从数据库中删除该行数据。我对 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'>";
}
?>
当点击删除链接时,它只是出现一个空白屏幕。任何帮助深表感谢!谢谢
【问题讨论】:
-
您是否确认错误报告已开启?
-
请看一下SQL注入,为什么你这样做的方式很危险。
-
您正在查看是否设置了
$_GET['del']。但这不是您的 HTML 传递的参数。只有设置了该参数,您的代码才会执行某些操作 - 如果缺少该参数,则不会执行任何代码。 -
将 '$id' 更改为占位符 (?) 然后通过执行传递 $id -> execute(array($id));否则可以用于sql注入
-
不会解决您手头的问题,但您需要解决这些
<div class="compTable"和<table >--- 仅此一项就会玩一些讨厌的把戏。 做:<div class="compTable">和<table>