我有这样的代码:
index.php文件
<?php
$host="localhost";
$username="root";
$password="";
$databasename="admin_example";
$connect = mysqli_connect($host, $username, $password, $databasename);
$select = mysqli_query($connect, "SELECT * FROM rating");
$data = mysqli_fetch_assoc($select);
if( $connect -> connect_error){
echo ("connection failed" . $connection->connect_error);
}
function query($query){
global $connect;
$result = mysqli_query($connect, $query);
$rows = [];
while($row = mysqli_fetch_array($result)){
$rows[] = $row;
}
return $rows;
}
if(isset($_POST['like'])){
global $connect, $select;
$query = mysqli_query($connect, "UPDATE rating SET total_votes=total_votes+1,likes=likes+1");
foreach($select as $row){
$likes = $row["likes"];
echo $likes;
exit();
}
}
?>
<link rel="stylesheet" type="text/css" href="rating_style.css">
<input type="button" id="like" onclick="like();" value="Likes: <?php echo $data["likes"]; ?>">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
function like(){
$.ajax({
type: 'POST',
url: 'index.php',
data: {
like:"likes"
},
success: function (response) {
$("#like").prop('value', 'Likes: ' + response);
}
});
}
</script>
<?php
?>奇怪的是,它的价值并没有立即改变。所以,比如喜欢: 0,你点击一次不变还喜欢: 0,再点击喜欢: 1,然后如果我刷新浏览器的类似: 2。我已经在网上搜索答案,但没有运气。任何帮助都是非常感谢的,谢谢。
发布于 2021-01-30 20:04:03
在给定的示例中,“全局$connect,$select;"将select从全局导入到本地范围,并在评级更新之前执行。因此,它总是在更新之前返回数据。
下面的代码将为您提供预期的信息
<?php
$host="localhost";
$username="root";
$password="";
$databasename="admin_example";
$connect = mysqli_connect($host, $username, $password, $databasename);
$select = mysqli_query($connect, "SELECT * FROM rating");
$data = mysqli_fetch_assoc($select);
if( $connect -> connect_error){
echo ("connection failed" . $connection->connect_error);
}
function query($query){
global $connect;
$result = mysqli_query($connect, $query);
$rows = [];
while($row = mysqli_fetch_array($result)){
$rows[] = $row;
}
return $rows;
}
if(isset($_POST['like'])){
global $connect, $select;
$query = mysqli_query($connect, "UPDATE rating SET total_votes=total_votes+1,likes=likes+1");
//which should be executed after the update
$select = mysqli_query($connect, "SELECT * FROM rating");
foreach($select as $row){
$likes = $row["likes"];
echo $likes;
exit();
}
}
?>
<link rel="stylesheet" type="text/css" href="rating_style.css">
<input type="button" id="like" onclick="like();" value="Likes: <?php echo $data["likes"]; ?>">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
function like(){
$.ajax({
type: 'POST',
url: 'index.php',
data: {
like:"likes"
},
success: function (response) {
$("#like").prop('value', 'Likes: ' + response);
}
});
}
</script>
<?php
?>https://stackoverflow.com/questions/65972188
复制相似问题