2014-12-18 129 views
-2

我有一个简单的MS Access数据库插入单列行。这里是页面:PHP无法删除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"); 
} 

?> 

然而,当我点击删除行,它不会删除它。我忘了什么吗?

我很感激任何能够帮助我的人。

+1

你很容易[sql注入攻击](http://bobby-tables.com) –

回答

0

我不知道,这将是最终的解决方案,但对于初学者:

$cdatividade = $row['CdAtividade']; 

$row变量没有在该文件存在。你传递的查询字符串,所以它应该是:

$cdatividade = $_GET['CdAtividade']; 

而且,一般来说它没有必要用引号包围数值,所以你当前的DELETE语句:

$sql = "DELETE FROM Atividades WHERE CdAtividade='$cdatividade'"; 

。 ..could被改写为:

$sql = "DELETE FROM Atividades WHERE CdAtividade=$cdatividade"; 

最后,值得一提的是马克乙这样做,你现在查询是容易受到SQL注射液n攻击如下:

http://yourdomain.com/delete_atividade.php?CdAtividade=0;DROP TABLE Atividade;

会导致您的SQL看起来像这样:

DELETE FROM Atividades WHERE CdAtividade=0;DROP TABLE Atividades; 

在执行时,表格就会被丢弃,这是没有乐趣。

+0

谢谢,布赖恩。这真的帮助了我! –