数据库中的PHP MySQL数学更新值

数据库中的PHP MySQL数学更新值,php,mysql,mysqli,addition,subtraction,Php,Mysql,Mysqli,Addition,Subtraction,所以我在自己制作的网站上建立了一个评级系统。目前,每个项目a的每一侧都有一个加号和减号按钮,在本例中,其中一个项目的评级为3.1 我试着对加号和减号按钮进行编程,这样当用户按下按钮时,评分会增加或减少一个 目前我只执行了减号按钮,但是,当我点击它时,评级值没有下降。它保持在3.1。页面工作正常,当我单击“减号”按钮时,我得到了对第67行非对象上的成员函数execute()的错误调用,该非对象是$stmt->execute() 以下是我目前掌握的代码: <?php $results = $m

所以我在自己制作的网站上建立了一个评级系统。目前,每个项目a的每一侧都有一个加号和减号按钮,在本例中,其中一个项目的评级为3.1

我试着对加号和减号按钮进行编程,这样当用户按下按钮时,评分会增加或减少一个

目前我只执行了减号按钮,但是,当我点击它时,评级值没有下降。它保持在3.1。页面工作正常,当我单击“减号”按钮时,我得到了对第67行非对象上的成员函数execute()的错误调用,该非对象是
$stmt->execute()

以下是我目前掌握的代码:

<?php
$results = $mysqli->query("SELECT * FROM programmes ORDER BY ProgrammeName ASC");
if ($results) { 
     $i=0;
     echo '<table><tr>';

     echo '<br/>';
     echo '<br/>';

     while($obj = $results->fetch_object())
    {   
        echo '<td>';
        echo '<div class="tvProgs">'; 
        echo '<form method="post" id = "programmes" action="">';
        echo "<input type=\"hidden\" name=\"progID\" value=\"".htmlentities($obj->ProgrammeID)."\" />";
        echo '<div class="progImage"><img src="images/'.$obj->Image.'"></div>';
        echo '<div class="progTitle"><h3>'.$obj->ProgrammeName.'</h3>';
        echo '<div class="progRating"><h5>'.$obj->Rating.'</h5></div>';
        echo '<div id = "btnMin"><input type="button" id ="minus" value ="-"/></div>';
        echo '<div id = "btnPl"><input type="button" id ="plus" value ="+"/></div> ';
        echo '<br/>';
        echo '</form>';
        echo '</div>';
        echo '</td>';
        $i++; 
        if ($i == 5) {
          echo '</tr><tr>';
        }
    }
     echo '</tr></table>';
}

    if(isset($_POST['minus'])){
        $newRating = 1;
        $ID = $_POST['progID'];

        $upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE progID='$ID'";
        $stmt = $mysqli->prepare($upsql);
        $stmt->execute();
    }

?>

对于使用
\u POST['some\u name']
表单上的字段应具有
name
属性和值
some\u name

<input type="button" name="some_name" value="Some value"/>
再想一想,由于你的
加号/减号
按钮没有
type=“submit”
我想你的表单不会提交,除非你有一些隐藏的javascript

尝试将您的
加/减按钮设置为:

<input type="submit" name="minus" value ="-"/>
<input type="submit" name="plus" value ="+"/>

或者,您可以使用HTML5数字类型输入进行评分。根据broswer的不同,您将有一个小旋转器来完成此任务。请注意,并不是所有的Broswer都呈现相同的结果

echo '<div class="progRating">
    <h5><input type="number" id="rating" name="rating" value="'.$obj->Rating.'"/></h5></div>';
echo'
';
然后,您只需使用新值更新评级。
更多信息请点击此处:

更改您的查询:

$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE progID='$ID'";
为此:

$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE ProgrammeID='$ID'";

希望它能起作用。

您实际上还没有在这里提出问题。你的代码没有工作吗?如果没有,那它怎么会不起作用呢?或者是别的什么问题?它似乎不起作用。上面的代码我只实现了减号按钮,但是当用户点击它时,评级应该会降低一,但似乎没有降低。它只是停留在3.1,你介意编辑你的问题,并准确解释它是如何不起作用的吗?它是否生成页面正常,但链接不起作用?您尝试执行更新时是否存在问题?我在第67行的非对象上得到了对成员函数execute()的错误调用,该非对象是$stmt->execute();在此处搜索此错误的部分代码。你的问题已经被问过几千次了。我确实考虑过了,但是我更喜欢如果它是一个正常的评级系统,这个人要么按正负号。我更喜欢星体系统,但在这方面还没有成功。介意解释一下这个问题吗?现在你的答案有点稀疏和不清楚。在将数据存储到隐藏字段时,他使用$obj->PROGRAMEID,因此看起来数据库字段是已编程的,但在更新到数据库而不是使用PROGRAMEID时,他正在更新progID,progID是隐藏字段,而不是数据库字段名。
$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE ProgrammeID='$ID'";