【问题标题】:HTML/PHP Survery not passing ID from table correctlyHTML/PHP Survery 未正确从表中传递 ID
【发布时间】:2011-09-15 01:08:59
【问题描述】:

我会尽量保持简单...这是我用来从数据库中填充下拉菜单的代码。这会正确填充下拉菜单。

<form action="formsubmit.php?team_id=6" method="post">
    <label> <br />What did they say?: <br />
        <textarea name="quotetext" rows="10" cols="26"></textarea></label>
    <select name='name'>
        <?php
            while ($temp = mysql_fetch_assoc($query)) {
                echo "<option value=" . $temp['id'] . ">".htmlspecialchars($temp['lastname']) . ", " . htmlspecialchars($temp['firstname']) . "</option>";
            }
        ?>
    </select>
    <input type="submit" value="Submit!" />
</form>

我正在尝试做的是将人的 ID 传递到文件 formsubmit.php 中,该文件在提交表单时被调用。当我在 formsubmit.php 中对我的数据库查询使用 $die($sql) 时,此人的 ID 为空白......其他一切都很好地通过了。这是formsubmit.php中的相关代码:

$quotetext = $_POST['quotetext'];
    $id = $_POST['id'];
    $team_id = $_GET['team_id'];
    $sql = "INSERT INTO quotes SET 
            speaker_id='$id',
            quotetext='$quotetext',
            game_id=2";
    die($sql);

编辑:已修复,感谢 Michael。

<select name='name'>

应该是:

<select name='id'>

【问题讨论】:

  • 请阅读 SQL 注入漏洞。您的脚本很容易受到数据库篡改和黑客攻击。 en.wikipedia.org/wiki/Sql_injection 简而言之,您应该对您在 SQL 查询中使用的所有变量调用 mysql_real_escape_string()。
  • 示例:$quotetext = mysql_real_escape_string($_POST['quotetext']);
  • 对于整数值使用:intval($_POST['id']);,对于字符串值mysql_real_escape_string()。检查是否使用get_magic_quotes_gpc() 在服务器上设置了魔术引号配置值并在您的GPC 变量上使用stripslashes() 也是明智之举。

标签: php mysql html database


【解决方案1】:

乍一看,它看起来像是一个错字。试试:

$id = mysql_real_escape_string($_POST['name']);

【讨论】:

    【解决方案2】:

    在您的表单中,您使用的是&lt;select name='name'&gt;,但在您的PHP 脚本中您调用的是$_POST['id']。 将其更改为:

    <select name='id'>
    

    【讨论】:

    • 哇!好眼力,谢谢楼主。我会尽快接受。
    【解决方案3】:

    问题是您没有以“id”为名称的表单变量。在我看来,您只需将&lt;select name='name'&gt; 更改为&lt;select name='id'&gt;

    【讨论】:

      【解决方案4】:
      $team_id = $_POST['name']
      

      您的选择元素名为“name”,您的表单为“POST”。

      【讨论】:

        【解决方案5】:

        你需要改变

        $id = $_POST['id'];
        

        $id = $_POST['name']; // as name is what you gave your select element
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-24
          • 1970-01-01
          • 2012-11-07
          • 1970-01-01
          • 1970-01-01
          • 2014-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多