用于增加记录字段值的 PHP/SQL 脚本未更新记录

标签 php mysql

HTML:

<form>
    <input type="radio" name="grade" value=95 /> A<br />
    <input type="radio" name="grade" value=85 /> B<br />
    <input type="radio" name="grade" value=75 /> C<br />
    <input type="radio" name="grade" value=65 /> D<br />
    <input type="radio" name="grade" value=50 /> F
</form>

PHP:

if (isset($_POST['grade'])) {
                    $name = $_POST['name'];
                    $grade = $_POST['grade'];
                    $sql = "UPDATE grade SET 
                    total=total+'$grade',
                    numvotes=numvotes+1 WHERE
                    name='$name'";

大家好...我正在做一个项目,在菜单上添加与名称关联的等级。我的等级径向菜单的 HTML 代码在上面,并且还显示了我的相关 SQL。我想将成绩中的一个数字值添加到我的 SQL 数据库中的“总计”上,并将投票数增加 1。我不确定我的语法是否正确,因为数据库既没有增加投票数也没有增加成绩全部的。 谢谢!

编辑:当我进入 mySQL 控制台时,我对这不起作用感到困惑的部分原因是 b/c,我可以执行几乎相同的命令(其中 '$grade' 是一个数字)它有效。至少我应该得到一个错误,或者 numvotes 应该增加,但没有。

EDIT2:感谢 Radu 捕获了这个。我的名字菜单无法正常工作。在我的 SQL 语句后使用 $die 后,我发现从下拉菜单中选择的名称被解释为整数,而不是名称。它由数据库中的 SQL 名称填充。这是我的代码。

<?php
    $query = mysql_query("SELECT name, id FROM grade");
    echo "<select name='name'>";
        while ($temp = mysql_fetch_assoc($query)) {
            echo "<option value='".$temp['name']."'>".$temp['name']."    </option>";
        }
    echo "</select>";
?>

EDIT3:将 $temp['id'] 更改为 $temp['name'] 后,我发现我的 die($sql) 现在是:

UPDATE grade SET total=total+'95', numvotes=numvotes+1 WHERE name='charlie'

因此名称已输入,但仍未更新。想法?

最佳答案

您在 SQL 查询中使用名称作为字符串。所以更改以下内容:

echo "<option value='".$temp['id']."'>".$temp['name']."</option>";

到:

echo "<option>".htmlspecialchars($temp['name'])."</option>";

对于实时项目,始终使用 htmlspecialchars()echo() 向浏览器发送内容时,总是 使用 mysql_real_escape_string()根据用户输入编写 SQL 查询时。

例如,在实时项目中,您应该始终使用 $name = mysql_real_escape_string($_POST['name']) 而不是简单地使用 $name = $_POST['name' ]

关于用于增加记录字段值的 PHP/SQL 脚本未更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270630/

相关文章:

php - 仅搜索部分数据库字符串时打印数据库字符串(通过 PHP 语句)

php - 检查哪个用户点击了哪个链接

php - 在 PHP 中回应 MySQL 查询

javascript - 解码json时保持关联数组

mysql - MySQL密码中括号的使用

php - 检查重复键后插入值

PHP mysql_fetch_assoc 仅返回 1

php - 如何从数组的 foreach 循环创建数组?

IPv6 的 PHP preg_match 问题

javascript - 无限滚动(mysql、php 和 js)循环问题