我给你举了一个我的问题的简化示例,然后尝试解释它:
<?php
$connect = mysqli_connect($link, $user, $pw, $db);
$informations = mysqli_fetch_array(mysqli_query($connect, "SELECT * FROM table WHERE id = '$id' "));
if($_POST['submit']){
if($informations['show'] == 'true'){
if($informations['changes'] <= '100'){
$value = mysqli_real_escape_string($connect, $_POST['value']);
mysqli_query($connect, "UPDATE table SET changes=changes+1, value='$value' WHERE id = '$id'");
}else{
echo "You made too much changes.";
}
}else{
echo "You cannot change this.";
}
}
if($informations['show'] == 'true'){
echo "<form action='' method='post'>";
echo "<input type='text' name='value' /><input type='submit' name='submit' value='Update' />";
echo "</form>";
}
echo "<br/>You currently have made ".$informations['changes']." changes";
?>
因此,查看这段代码我可以看到:
我进入我的页面并在提交按钮附近输入文本
在此下方我写了“您目前已进行 0 次更改。”
如果我按下提交按钮我的页面刷新,我可以看到:
提交按钮附近的文本输入
在这下面我写了“你目前已经做了 0 次更改。”
如果我这次刷新页面,我可以看到:
提交按钮附近的文本输入
在这下面我写了“你目前已经做了 1 处改变。”
所以我想问你的是:
有没有什么办法可以在正常刷新表单后直接在页面上看到更新?
我不能将“更新查询”放在“选择查询”之上,因为在进行更新之前我需要检查用户的值....
我知道我可能会使用 AJAX,但如果没有 AJAX,php 就无法做到这一点,这似乎很奇怪,而且这需要更多时间...
任何帮助将不胜感激,谢谢!
最佳答案
原因与是否使用 Ajax 无关。您增加了数据库中的 changes 值,但没有增加 PHP 变量中的值。
所以就在这一行之前:
mysqli_query($connect, "UPDATE table SET changes=changes+1, value='$value' WHERE id = '$id'");
添加以下内容:
$informations['changes']++;
备注
尽管您在 $value
中对引号进行了转义以避免 SQL injection ,最好准备您的语句而不是将值连接到其中。
changes 字段是数字,所以这个比较是错误的:
if($informations['changes'] <= '100'){
它应该没有引号:
if($informations['changes'] <= 100){
将消息“太多的变化”更改为“太多的变化”,因为变化是复数。
关于PHP 从数据库中选择结果,检查它们,进行更新并打印它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34381080/