2017-12-02 146 views
0

所以我想刪除網站上的評論,也從數據庫中刪除,但它只是在網站上找到。點擊刪除按鈕後,評論消失了,但我的數據庫中沒有任何更改。刷新頁面後,我刪除的評論再次出現。 所以我想,不知何故,ajax使得php再次與MySQL數據庫斷開連接。使用ajax後php無法連接數據庫

的jQuery:

$(".delete").each(function (index4) { 
    $(this).on("click",function (event) { 
     $(this).parent().parent().load("../public/form/delete_comments.php", {index4:index4}, function() { 
      $(this).remove(); 
     }); 
    }) 

PHP:

<?php 
require_once "../../private/initialize.php"; 
$id = $_SESSION['id']; 
$thread_clicked = isset($_POST['index4'])?$_POST['index4']:''; 

$req_user = "SELECT * FROM log_in WHERE id='" .$id. "'"; 
$result_user = mysqli_query($db,$req_user); 
$subject_user = mysqli_fetch_assoc($result_user); 

$req = "DELETE FROM comments WHERE user=`" .$subject_user['account']. "` AND c_id=`" .$thread_clicked. "`"; 
$result = mysqli_query($db,$req); 

更新:我改變了Ajax:$(this).parent().parent().load("/yyqGS/public/form/delete_comments.php",{index4:index4});

,但仍然沒有做任何更改的數據庫。

UPDATE:

<?php 
require_once "../../private/initialize.php"; 
session_start(); 
$id = $_SESSION['id']; 
$thread_clicked = isset($_POST['index4'])?$_POST['index4']:''; 
$thread_clicked = $thread_clicked +1; 
$req_user = "SELECT * FROM log_in WHERE id='.$id.'"; 
$result_user = mysqli_query($db,$req_user); 
$subject_user = mysqli_fetch_assoc($result_user); 


$req = "DELETE FROM comments WHERE user='" .$subject_user['account']. "' AND c_id='" .$thread_clicked. "'"; 
$result = mysqli_query($db,$req); 

if (!$req) { 
    printf("Error: %s\n", $mysqli_error($db)); 
} 
else{ 
    echo $result; 
} 

我得到了1次每次我刪除一條評論,但是數據庫依然不改!

魔法剛剛發生!我甚至不知道我做了什麼(我固定引號問題),但它只是知道!

<?php 
require_once "../../private/initialize.php"; 
session_start(); 
$id = $_SESSION['id']; 
$thread_clicked = isset($_POST['index4'])?$_POST['index4']:''; 
$thread_clicked = $thread_clicked +1; 

$req_user = "SELECT * FROM log_in WHERE id='".$id."'"; 
$result_user = mysqli_query($db,$req_user); 
$subject_user = mysqli_fetch_assoc($result_user); 

$req = "DELETE FROM comments WHERE user='" .$subject_user['account']. "' AND c_id='" .$thread_clicked. "'"; 
$result = mysqli_query($db,$req); 



if (!$req) { 
    printf("Error: %s\n", $mysqli_error($db)); 
} 
else{ 
    echo $req; 
} 
?> 
+0

檢查您的網絡中的ajax網址是否正確? – user6606700

+0

@ user6606700它應該是,因爲php文件可以得到index4的值。 –

+1

此代碼容易受到sql注入的影響,並且兩個sql查詢可以合併。使用準備的語句! – RamRaider

回答

0
<?php 
require_once "../../private/initialize.php"; 
$id = $_SESSION['id']; 
$thread_clicked = isset($_POST['index4'])?$_POST['index4']:''; 

$req_user = "SELECT * FROM log_in WHERE id='$id'"; 
$result_user = mysqli_query($db,$req_user); 
$subject_user = mysqli_fetch_assoc($result_user); 

$req = $result = mysqli_query($db,$req); 

$req = "DELETE FROM comments WHERE user='"$subject_user['account']"' AND c_id='"$thread_clicked"'"; 
$result = mysqli_query($db,$req); 

嘗試爲你的PHP驗證碼。如果它工作正常,我會編輯解釋。

+0

我試過你的代碼,仍然是一樣的,它只刪除網站上的評論,但沒有連接到數據庫。 –

+0

它在網站上因爲你的javascript照顧這個刪除,前端與php無關。在代碼中再做一個小小的改動就可以再試一次。如果它仍然沒有做任何事情,可以在代碼中的某處放置一個類似於'echo「的代碼,我在這裏」;'在ajax調用的開發人員選項卡中,在右邊的響應選項卡中,您可以看到php的輸出你應該看到它。另請嘗試在db連接文件的require_once絕對路徑中設置。 – pr1nc3

+0

好吧,我的壞。我的js文件沒有連接到我的php文件。 –

0

您在刪除語句中使用了錯誤的引號 - 您使用的後退標記用於標識字段而非環繞值。

$req = "DELETE FROM comments WHERE user=`" .$subject_user['account']. "` AND c_id=`" .$thread_clicked. "`"; 

應該

$req = "DELETE FROM comments WHERE user='" .$subject_user['account']. "' AND c_id='" .$thread_clicked. "'"; 

用單引號,而不是反引號。

編輯:也非常有用,從查詢檢查返回值...

if (!$result) { 
    printf("Error: %s\n", $mysqli_error($db)); 
} 

應該讓你知道,如果有與刪除的任何問題。

+0

我已經嘗試過,沒有任何改變。 –

+0

我已經添加了一些代碼來輸出一個錯誤(如果發生的) –

+0

,因爲這是我第一次使用ajax,我不完全明白它是如何工作的,但是在我刪除評論之後,頁面沒有自動翻轉delete_comments.php,這是這個PHP文件。相反,它留在同一頁我刪除評論。所以結果不會顯示出來。 –