PHP无法删除MS Access表行
我有一个简单的MS Access数据库,可以插入单列行。以下是网页:PHP无法删除MS Access表行,php,sql,Php,Sql,我有一个简单的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
<!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");
}
?>
DELETE FROM Atividades WHERE CdAtividade=0;DROP TABLE Atividades;
但是,当我单击删除行时,它不会删除它。我忘了什么吗
我感谢任何能帮助我的人。我不确定这是否是最终解决方案,但首先:
$cdatividade = $row['CdAtividade'];
$row变量在此文件中不存在。您正在传递查询字符串,因此它应该是:
$cdatividade = $_GET['CdAtividade'];
另外,一般来说,对于数值,不必用引号括起来,因此您当前的delete语句:
$sql = "DELETE FROM Atividades WHERE CdAtividade='$cdatividade'";
…可以改写为:
$sql = "DELETE FROM Atividades WHERE CdAtividade=$cdatividade";
最后,值得注意的是,正如Marc B所做的那样,您当前的查询容易受到SQL注入攻击,如下所示:
表2:阿维德
将导致您的SQL如下所示:
<?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");
}
?>
DELETE FROM Atividades WHERE CdAtividade=0;DROP TABLE Atividades;
执行时,您的表将被丢弃,这一点都不好玩。您很容易受到攻击