使用ajax后php无法连接数据库

问题描述:

所以我想删除网站上的评论,也从数据库中删除,但它只是在网站上找到。点击删除按钮后,评论消失了,但我的数据库中没有任何更改。刷新页面后,我删除的评论再次出现。 所以我想,不知何故,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

<?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文件。 –

您在删除语句中使用了错误的引号 - 您使用的后退标记用于标识字段而非环绕值。

$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文件。相反,它留在同一页我删除评论。所以结果不会显示出来。 –