语境:
我创建了一个页面,用户可以在其中对辩论进行投票。辩论都有两个可能的选择。当用户单击左侧的选项时,它返回值“0”。当用户单击右侧的选项时,它返回值“1”。用户单击他们想要投票的一方后,将执行 AJAX 调用,该调用会检查数据库以通过检查用户 ID 和民意调查 ID 来查看用户是否已经投票。AJAX 工作正常。这是 jQuery/AJAX 代码:
$(".display-polls-container").on("click", "input:radio", function(e) { //when user votes on debate
var thisElement = $(this);
var vote_value = $(this).val();
var pollId = $(this).parent().parent().parent().siblings().children(".poll-id").val();
<?php if (isset($_SESSION['id'])) { ?>
setVote(vote_value, pollId, thisElement); //insert vote into database
<?php } else { ?>
alert("You must sign in to vote on a debate");
<?php } ?>
});
function setVote(vote_value, pollId, thisElement) { //insert vote into database
$.ajax({
url: 'includes/poll_votes.php',
type: 'POST',
data: {vote_value: vote_value, pollId: pollId, idUsers: idUsers},
success: function(data) {
getVote(pollId, thisElement); //if vote inserts correctly, get the vote count and apply it to the debate (this function is not relevant enough to include its code)
},
error: function(requestObject, error, errorThrown) {
//console.log(error);
//console.log(errorThrown);
}
});
}
问题:
问题是 PHP 代码目前无法正常工作。除了功能之外,一切似乎都在起作用mysqli_num_rows()。
发生的情况是,即使用户已经对特定辩论进行了投票,查询也不会禁止他们继续对同一辩论进行投票。一旦用户投票一次,他们就不能再投票了。我尝试检查他们是否已经使用该mysqli_num_rows()
函数投票,但它总是返回 0,无论实际有多少行。
我通过将自己的值提交到 mysqli 数据库的“SQL”部分来检查原始查询,它工作得很好,所以我不认为问题出在查询上。我还使用未准备好的语句形成了查询,它工作正常并从数据库返回了正确数量的结果。这意味着我使用准备好的语句这一事实可能意味着我遗漏了一些东西。有任何想法吗?谢谢。
有只小跳蛙