2015-09-27 48 views
0

嗨,大家好我即將嘗試創建一個ajax刪除腳本爲我的畫廊,但它似乎並沒有刪除,而是它給出了以下錯誤。刪除照片腳本給出的錯誤在php和mysql

Warning: Division by zero in /opt/lampp/htdocs/project/others/delete_photo.php on line 20 

Warning: unlink(): No such file or directory in /opt/lampp/htdocs/project/others/delete_photo.php on line 20 

刪除腳本如下:

<?php 
require $_SERVER["DOCUMENT_ROOT"].'/project/includes/dbconfig.inc.php'; 
$session= htmlentities($_SESSION['uname']); 
$sess_uname= stripslashes($session); 
$id0= htmlentities($_POST['id']); 
$id= stripslashes($id0); 
$sql="DELETE FROM photos WHERE id=':id' LIMIT 1"; 
$stmt=$conn->prepare($sql); 
$stmt->bindparam(":id",$id); 
$stmt->execute(); 
$sql1 = "SELECT * FROM photos WHERE user=':session' LIMIT 30"; 
$stmth=$conn->prepare($sql1); 
$stmth->bindparam(":session",$sess_uname); 
$stmth->execute(); 
$dir="user/$sess_uname"; 
$count0=$stmth->fetch(PDO::FETCH_ASSOC); 
$count=count($count0); 
$row1 = $stmth->fetch(PDO::FETCH_ASSOC); 
if ($count>0) { 
    unlink($dir/$row1['filename']); 
} 
/*if (isset($_SESSION['app'])&&$_SESSION['uname']!="") { 
    header("location: ../home.php?u={$_SESSION['uname']}");    
        } else { 
         header("location: ../index.php?usernotfound?id=017"); 
        } 
*/ 

的AJAX邏輯如下:

$("button.delete_photo").click(function(){ 

    var del_id = $(this).attr('id'); 
var del_attr=$(this).attr('attr'); 
$.post("others/delete_photo.php", 
{id:del_id},function(data){ 
$("."+del_id).slideUp('slow', function() {$(this).remove(data);}); 

    } 
); 


}); 
+0

你錯過了'在session_start();'在你的代碼的開頭。 PS。 '$ dir/$ row1 ['filename']'不會做你認爲它做的事。 – user5173426

+0

但是session_start包含在dbconfig.inc.php @HawasKaPujaari中,並且它使用print_r()正確打印。 – jackal4me

+0

您的代碼旨在刪除一條記錄,但您的查詢可能會返回多條記錄。請提供var_dump($ row1)的輸出;這樣你可以首先確認你的查詢甚至是檢索數據。 –

回答

0

改變這一行

unlink($dir/$row1['filename']); 

unlink($dir.'/'.$row1['filename']); 

因爲不是提供目錄結構,而是將值分開。

+0

這是否解決了您的問題? –

+0

不,它沒有@arun krish – jackal4me

1

從一開始就開始:

1) echo這個,看看你得到了什麼?你是否得到想要的/預期的名字?

echo $session= htmlentities($_SESSION['uname']); 

如果是這樣,這echo還有:

$sess_uname= stripslashes($session); 

2)同樣,如果你被echo得到一個期望的結果向ING:

$id0= htmlentities($_POST['id']); 

這意味着你的第一個查詢應該工作。現在

,下面的查詢工作,如果你已經得到了預期的結果,從1)

$sql1 = "SELECT * FROM photos WHERE user=':session' LIMIT 30"; 

3)這並不是指定目錄的正確方法。

$dir="user/$sess_uname"; 

而是使用正確的串聯,如:

$dir= "user" . "/" . $sess_uname; 

4)如果所有上述的作品,這也是不正確的。要麼使用$_SERVER['DOCUMENT_ROOT']來構建與您的網站的根目錄開始的絕對路徑,或者使用相對路徑,下面寫的行是你得到的原因Warning: Division by zero

unlink($dir/$row1['filename']); 

而哪些應該是:

unlink($dir . "/" . $row1['filename']); 

但這就是只有如果$row1正在工作,目前顯然不是。

+0

row1正在輸出布爾(假)其餘的步驟似乎運作良好。 – jackal4me

+0

@ jackal4me Ahh,_您的查詢中存在錯誤_。檢查正確的表名以及列名「echo」你的查詢,看看發生了什麼,以及它是否幫助你解決了你的問題,不要忘記接受我的答案';-)'乾杯 – user5173426

0

終於找到了解決辦法,問題出在sql語法上。 以前是這樣的:

$sql="DELETE FROM photos WHERE id=':id' LIMIT 1"; 

$sql1 = "SELECT * FROM photos WHERE user=':session' LIMIT 30"; 

我拿出單引號ID,因爲它是一個整數,現在,它就像一個魅力。 現在我的代碼如下所示:

$sql="DELETE FROM photos WHERE id=:id LIMIT 1"; 
$sql1 = "SELECT * FROM photos WHERE id=:id LIMIT 1";