使用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;
}
?>
<?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验证码。如果它工作正常,我会编辑解释。
我试过你的代码,仍然是一样的,它只删除网站上的评论,但没有连接到数据库。 –
它在网站上因为你的javascript照顾这个删除,前端与php无关。在代码中再做一个小小的改动就可以再试一次。如果它仍然没有做任何事情,可以在代码中的某处放置一个类似于'echo“的代码,我在这里”;'在ajax调用的开发人员选项卡中,在右边的响应选项卡中,您可以看到php的输出你应该看到它。另请尝试在db连接文件的require_once绝对路径中设置。 – pr1nc3
好吧,我的坏。我的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));
}
应该让你知道,如果有与删除的任何问题。
我已经尝试过,没有任何改变。 –
我已经添加了一些代码来输出一个错误(如果发生的) –
,因为这是我第一次使用ajax,我不完全明白它是如何工作的,但是在我删除评论之后,页面没有自动翻转delete_comments.php,这是这个PHP文件。相反,它留在同一页我删除评论。所以结果不会显示出来。 –
检查您的网络中的ajax网址是否正确? – user6606700
@ user6606700它应该是,因为php文件可以得到index4的值。 –
此代码容易受到sql注入的影响,并且两个sql查询可以合并。使用准备的语句! – RamRaider