Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询';被JS调用的s被插入了两次_Php_Mysqli - Fatal编程技术网

Php 查询';被JS调用的s被插入了两次

Php 查询';被JS调用的s被插入了两次,php,mysqli,Php,Mysqli,首先,我已经阅读了其他关于插入查询的SO文章两次,给出的建议是确保该页面上没有额外/不必要的mysqli\u query()函数。我已经这样做了,但我仍然有这个问题,所以我问自己 我一直在试图弄清楚,为什么liked_button.php上的查询在大约24小时内输入了两次,但都没有成功 我有一个用户可以点击的喜欢的按钮,当点击该按钮时,信息进入liked_button.php,该信息随后被传输到喜欢的和通知表。但由于某些原因,查询运行了两次 相关代码如下所示 我在index.php上的带有lik

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

我一直在试图弄清楚,为什么liked_button.php上的查询在大约24小时内输入了两次,但都没有成功

我有一个用户可以点击的喜欢的按钮,当点击该按钮时,信息进入liked_button.php,该信息随后被传输到
喜欢的
通知
表。但由于某些原因,查询运行了两次

相关代码如下所示

我在index.php上的带有like按钮的回声like表单:

<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>

函数getLikes(){//函数离开_comment.php
var form=jQuery(“#likes_form”);
$.ajax({type:“GET”,url:form.attr(“action”),data:form.serialize(),success:function(){/**/});
}
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');
?>

这是一个JS/jquery的东西。就像马克说的,看看你的萤火虫,看看是否有一个或两个帖子

当这种情况发生在我身上时,我通常使用.bind()函数。我不知道你是怎么触发的,因为我在任何地方都看不到触发器。但这将是一个很好的起点


简而言之,检查你的萤火虫。如果您没有(获取它!或),请在成功时发出警报(或在由于某种原因失败时发出错误)。

您是否检查了浏览器的控制台(例如firebug net选项卡)以查看有多少请求来自JS代码?如果您的JS代码发送了两个ajax请求,那么它执行两次插入并不是PHP的错——它执行的正是您告诉它的。除此之外,你很容易受到伤害。享受服务器pwn3dI的乐趣我知道准备好的语句的好处。问题不在于使用准备好的语句,而是插入两个查询。谢谢你的评论,我会查一查。那么你知道为什么这个特定的JS函数会被调用两次吗?当它的语法与其他函数完全相同时,它们工作得很好?如果你这么说的话,这意味着你检查了firebug并确认你有第二篇帖子,对吗?如果是这样的话,如果您在绑定上进行绑定(这种情况确实发生,而且很不幸有效),那么它将被调用两次(每次绑定后还会调用一次)。就像我说的,这有时会发生在我身上,所以这是一些你可能会觉得有用的经验。但为了让我能以更具体的方式对你们有用,我需要更多的数据。您的站点是本地主机还是联机?因为我对youHey Matt看不到,我回去把输入从一个图像更改为一个提交按钮(这样就不需要JS),现在一切都很好。是的,问题出在我的JSGood上!现在找到f****并摧毁它(007风格)