Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP无法删除MS Access表行_Php_Sql - Fatal编程技术网

PHP无法删除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

我有一个简单的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");
 }

?>
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;
执行时,您的表将被丢弃,这一点都不好玩。

您很容易受到攻击