由JS调用的查询被插入两次

时间:2014-06-20 16:43:24

标签: php mysqli

首先,我已经阅读了有关插入两次查询的其他SO文章,并且给出的建议是确保您在该页面上没有额外/不必要的mysqli_query()函数。我已经这样做但我仍然有这个问题,所以我要求自己。

我一直试图弄清楚为什么对于like_button.php的查询现在大约24小时进入两次而没有运气。

我有一个用户可以点击的按钮,当点击该按钮时,信息将转到likes_button.php,该信息随后会传输到likesnotifications表。但由于某种原因,查询运行了两次。

相关代码如下

我在index.php上回复了类似于按钮的表单:

<form name='likes_form' id='likes_form' action='liked_button.php'>
<input type='hidden' name='hidden_folder' class='hidden_folder' value='$random_directory'>
<input type='hidden' name='hidden_name' class='hidden_name' value='$image_name'>
<input type='hidden' name='hidden_image' class='hidden_image' value='$image_info'>
<input type='hidden' name='hidden_user' class='hidden_user' value='$posted_by'>
<input type='image' id='like_button' class='like_button button' src='$button_source' onClick='return getLikes ()'>
<input disabled class='total_likes' value='$liked_count'>
</form>

单击like按钮的JS函数调用:

<script>
function getLikes()  {//function to leave_comment.php
var form = jQuery("#likes_form");      
$.ajax({ type: "GET", url: form.attr("action"), data: form.serialize(), success: function() {/**/} });
}
</script>

likes_button.php页面:

<?php

error_reporting(E_ALL); ini_set('display_errors', 1); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

session_start();

if(!isset($_SESSION['id'])) {
header('location:errors/must_login.php');
}
$full_location = $_GET['hidden_image'];
$ghost_folder = $_GET['hidden_folder'];
$ghost_name = $_GET['hidden_name'];
$uploading_user = $_GET['hidden_user'];
$liker = $_SESSION['id'];
$date = date('M/d/Y');
$time = date('Y:m:d h:i:s');
$action = 'liked';
$status = '0';
$conn = mysqli_connect("localhost","root","") or die ("No SQLI");           
mysqli_select_db($conn, "sample") or die ("No DB");
$enter_likes = ("INSERT INTO `likes` (action, hidden_folder, hidden_name, liked_img_loc, liked_by, posted_by, liked_unliked, date, time, status) VALUES ('$action','$ghost_folder','$ghost_name','$full_location','$liker','$uploading_user','1','$date','$time','$status')");
mysqli_query($conn, $enter_likes) or die ("No query");  
$likes_notifications = ("INSERT INTO `notifications` (action, loc_of_img, causing_user, effected_user, time, date) VALUES ('$action','$full_location','$liker','$uploading_user','$time','$date')");
mysqli_query($conn, $likes_notifications) or die ("No notifications query");
mysqli_close($conn);
header('location:index.php');
?>

我在likes_button.php上的所有变量上运行var_dump(),所有变量都包含正确的信息。

对于我的生活,我无法弄清楚为什么查询会运行两次。

我有相同的设置来获取用户评论并将其存储到commentsnotifications表中,并且该设置工作正常。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

然后这不是JS / jquery的事情。就像马克说的那样,看看你的萤火虫并查看是否有一两个帖子。

当我遇到这种情况时,通常是我的.bind()函数。我不知道你是如何触发它的,因为我没有在任何地方看到触发器。但这将是一个好的开始。

简而言之,检查你的萤火虫。如果你没有它(得到它!或者),请注意成功(如果由于某种原因失败则报错)。