2014-12-18 179 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

謝謝,布賴恩。這真的幫助了我! –