我有一个简单的MS Access数据库来插入单列行。这是页面:
<!DOCTYPE html>
<html>
<head>
<title>Bell Sistemas - Site de Atividades Teste em PHP</title>
</head>
<?php
include "session.php";
include "header.php";
include "connectSQL.php";
echo "<br><form action='' method='POST'><table align='center'>
<tr><th align='left'>Atividade: <br><input type='text' name='activity'></th></tr>
<tr><th align='left'><input type='submit' name='Cadastrar2' value='Cadastrar'></th></tr></table></form>";
$activity = $_POST['activity'];
if(isset($_POST['Cadastrar2'])) {
if($activity==''){
echo "O campo está vazio.";
}
else{
$sql = "Insert Into Atividades(Atividade) VALUES('$activity')";
$result = $db->query($sql);
echo "Atividade inserida.";
//header("Location: ./menu.php"); /* Redirect browser */
//exit();
}}
?>
<?php
$sql = "SELECT CdAtividade, Atividade FROM Atividades ORDER BY Atividade";
$result = $db->query($sql);
echo "\n<hr>";
echo "<table align='center'><tr><th align='left'>Atividade</th></tr>";
while ($row = $result->fetch()) {
echo "<tr><td align='left' width='250'>".$row['Atividade']."</td><td width='75'>Editar</td><td><a href='delete_atividade.php?CdAtividade=".$row['CdAtividade']."'>Excluir</a></td></tr>";
}
echo "</table>";
?>
<?php
include "footer.php";
include "tableConfig.php";
?>
</body>
</html>
我像这样配置了delete_atividade.php:
<?php
// connect to the database
include "session.php";
include "connectSQL.php";
// get id value
$cdatividade = $row['CdAtividade'];
// delete the entry
$sql = "DELETE FROM Atividades WHERE CdAtividade='$cdatividade'";
$result = $db->query($sql);
// redirect back to the view page
if($result){
header("Location: atividades.php");
}
else
// if id isn't set, or isn't valid, redirect back to view page
{
header("Location: atividades.php");
}
?>
但是,当我点击删除一行时,它不会删除它。我忘记了什么吗?
我感谢任何可以帮助我的人。
答案 0 :(得分:0)
我不确定这是最终解决方案,但对于初学者来说:
$cdatividade = $row['CdAtividade'];
此文件中不存在$row
变量。你传递的是查询字符串,所以它应该是:
$cdatividade = $_GET['CdAtividade'];
另外,一般来说,对于数值,没有必要用引号括起来,所以你当前的删除语句是:
$sql = "DELETE FROM Atividades WHERE CdAtividade='$cdatividade'";
......可以改写为:
$sql = "DELETE FROM Atividades WHERE CdAtividade=$cdatividade";
最后,值得注意的是, Marc B 认为您当前的查询容易受到以下SQL注入攻击:
http://yourdomain.com/delete_atividade.php?CdAtividade=0;DROP TABLE Atividade;
将导致您的SQL看起来像这样:
DELETE FROM Atividades WHERE CdAtividade=0;DROP TABLE Atividades;
执行时,你的桌子会掉线,这没什么好玩的。