【问题标题】:Set mysql values from radio buttons in html form从 html 形式的单选按钮设置 mysql 值
【发布时间】:2011-05-11 06:43:10
【问题描述】:

我想要网页上的两个单选按钮(用 php 编写)代表“是”和“否”。当我加载页面时,我希望它从 mysql 数据库中获取一个值并设置相应的单选按钮。当我点击另一个按钮时,我希望它更新数据库并重新加载页面。

我正在尝试使用简单的 html 表单来执行此操作,但没有运气。我到目前为止的代码(根本不起作用:(是:

if (!isset($_POST['submit'])) {
    $sql = "SELECT challenge_me FROM contestants WHERE id=$id";
    $res = (mysql_fetch_assoc(mysql_query($sql, $db)));
    $challenge_me = $res["challenge_me"];

}else{
    $sql = "UPDATE contestants SET challenge_me='" . $_POST['YesNo'] . "' WHERE id='$id'";
    if(!mysql_query($sql, $db))
        echo mysql_error(), "<br/>Query '$sql'";
    $challenge_me = $_POST['YesNo'];
}

    echo'<form method="post" action="' . $PHP_SELF . '">';
    echo '<input type="hidden" name="submit" value="submit">';          
if($challenge_me == 1){
    echo'<input type="radio" name="YesNo" value="1" onClick="this.form.submit();" checked>Yes ';
    echo'<input type="radio" name="YesNo" value="0" onClick="this.form.submit();">No ';
}else{
    echo'<input type="radio" name="YesNo" value="1" onClick="this.form.submit();">Yes ';
    echo'<input type="radio" name="YesNo" value="0" onClick="this.form.submit();" checked>No ';
}
echo'</form>';  

【问题讨论】:

  • 不是您问题的真正答案,但您不应该使用字符串连接来构建 SQL 查询。您的脚本目前很容易受到基于使用$_POST['YesNo'] 的 SQL 注入攻击,而无需至少对其进行转义或使用 mysql 语句。
  • 怎么不工作了?发生了什么?
  • 嗯,好像我解决了。如果隐藏的帖子被命名为“提交”,它就不起作用。当我单击单选按钮时,这阻止了表单执行任何操作。将其重命名为其他名称效果很好...感谢您对 sql 注入的评论!

标签: php html forms radio-button


【解决方案1】:

您的脚本似乎没有定义 $id,$id 的值是从哪里得到的?这可能是你问题的根源。您的脚本可能没有在 $id 中传递任何值

【讨论】:

  • 另外,我假设 $PHP_SELF 是空白的。我认为您正在尝试使用 $_SERVER['PHP_SELF']。这可能不会影响代码,但是因为将操作留空会自动将表单提交给它自己。
  • 嗯,$id 作为函数的参数(我删除了几行我认为对我的问题没有兴趣的代码)。
  • @faximan 你解决问题了吗?您是否尝试过@dqhendricks 的建议,这是另一个可能的原因
  • 是的,谢谢。它现在可以工作了,只需将隐藏输入的名称从“submit”更改为“submitValue”。猜猜“submit”是某种保留字。
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 2015-03-22
  • 2014-12-30
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多