PHP从数据库中选择结果,检查它们,进行更新并打印它们


PHP select results from database, check them, make an update and print them

我给你举一个我的问题的例子,然后试着解释它:

    <?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,但php在没有AJAX的情况下无法做到这一点似乎很奇怪,这需要更多的时间
任何帮助都将不胜感激,谢谢!

原因与是否使用Ajax无关。您正在增加数据库中的更改值,但不在PHP变量中。

所以就在这行之前:

        mysqli_query($connect, "UPDATE table SET changes=changes+1, value='$value' WHERE id = '$id'");

添加以下内容:

        $informations['changes']++;

备注

尽管您在$value中转义了引号以避免SQL注入,但最好准备好您的语句,而不是将值连接到其中。

字段更改是数字的,因此此比较是错误的:

if($informations['changes'] <= '100'){

它应该没有报价:

if($informations['changes'] <= 100){

将消息"更改太多"更改为"too many changes",因为changes是复数。