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/