将$ _get结果与db存储值进行比较

时间:2012-04-28 06:21:32

标签: php mysql forms post get

我有一个多项选择测验,可以通过这样的网址发送一个可能的答案

<form method="post" action="test2score.php?q=<?php echo $quiz_id; ?>">

在test2score.php页面上读取并尝试比较像这样的值

$ans = mysql_result(mysql_query('select c_answer from quiz where quiz_id = "'.$_GET['q'].'"'),0);
    if ($_POST['answer'] == $ans){
        echo "You got it right!";
    }else if ($_POST['answer'] <> $ans){
        echo "You got it wrong!";
    }

其中c_answer是存储在db中的正确答案,但即使我选择了正确的答案并发布它仍然回应“你弄错了”

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:0)

您的表单method="post"已发布,而您在[{1}}中的接收值正好是正确的 或者使用

$_GET['q']

答案 1 :(得分:0)

使用隐藏字段q并将该值发布到您的操作页面并使用

接收该值
$_POST['q'] and use that in your query.

感谢。

答案 2 :(得分:0)

为什么在$ _POST表单的操作中使用$ _GET请求?既然您并不担心自己的用户看到q的价值,那么为什么不在表单中添加隐藏的输入,结果为q

<input type="hidden" value=<?php echo $quiz_id ?> name="q" />

然后在您的查询中,检查$_POST['q']

似乎是实现这一目标的更合理,更合乎逻辑的方式

答案 3 :(得分:0)

而不是从表单操作传递测验ID而不是从隐藏表单字段传递它

如下 将表单操作设置为

action="test2score.php"

并将隐藏的表单字段设为

<input type="hidden" name="q" value=<?php echo $quiz_id; ?> />

并获得如下所示的值

$_POST['q'];