【问题标题】:Pass HTML Select into PHP Variable将 HTML 选择传递给 PHP 变量
【发布时间】:2011-09-15 17:46:53
【问题描述】:

我有几个看起来像这样的选择语句。我需要将 php 变量传递到我的数据库中。

 <select name="gamestart" >
 <?php for($gamestart=1; $gamestart<=24; $gamestart++)
 echo "<option value='$gamestart'>$gamestart:00</option>"; 
 ?>
 </select>

这是我在数据库中的插入语句,其中包含其他类似的变量,我遇到了同样的问题。

     <?php 
   $mysql_query = "INSERT INTO soccer_games (gamestart, gameend)
        VALUES ('$gamestart', '$gameend')";

    $this->db->query($mysql_query);
   ?>

到目前为止,值已被放入数据库,但插入到数据库中的值是数字 25(甚至不是我的循环中的选项,如您所见),无论我在形式。

================

编辑 1: 问题可能是我没有使用表格(我以无限的智慧没有意识到我需要一个表格)。

我假设我需要这种性质的东西......

public function insertstatements(){
<?php 
   $mysql_query = "INSERT INTO soccer_games (gamestart, gameend)
        VALUES ('$gamestart', '$gameend')";

    $this->db->query($mysql_query);
   ?>
}


<form method="post" action="<?php insertstatements(); ?>">


 <select name="gamestart" >
 <?php for($gamestart=1; $gamestart<=24; $gamestart++)
 echo "<option value='$gamestart'>$gamestart:00</option>"; 
 ?>
 </select>
</form>

【问题讨论】:

  • 请说明您如何从 HTTP 请求中读取 gamestart 的值
  • 在查询前你在哪里给$gamestart$gameend赋值?我感觉您在提交表单之前正在运行插入代码...(这就是为什么gamestart 是 25,这是循环完成后它的值)
  • 向我们展示您如何在查询中从 GET/POST 获取 $gamestart 的值,以及您使用它执行的所有操作。更新:是的,三个相同的问题打在你Pascal,试着咀嚼......:P

标签: php mysql html forms


【解决方案1】:

您可以使用 $_POST['gamestart']$_GET['gamestart'] 访问从表单发送的gamestart,具体取决于您在表单中设置的method(如果有没有method 属性,它将是GET)。

您的$gamestart 设置为25,然后我猜for 循环在您的数据库插入逻辑之前,因此它的值将设置为25

在将变量放入查询之前,请务必在变量上使用mysql_real_escape_string,否则您可能很容易遭受一些 SQL 注入 攻击。 永远不要相信用户输入!

所以一个正确的例子是(我不知道你从哪里得到$gameend,但如果它也来自表单,那么对它做同样的事情):

$gamestart=mysql_real_escape_string($_POST['gamestart']);
$mysql_query = "INSERT INTO soccer_games (gamestart, gameend)
        VALUES ('$gamestart', '$gameend')";

编辑:如果您启用了register_globals,您可以简单地以$gamestart 访问您的GET 和POST 变量。但是你应该把它关掉,不要写任何依赖它的代码。至于原因,请在 Google 上搜索。

【讨论】:

    【解决方案2】:

    您的form 标签应如下所示:&lt;form action="thepage.php" method="post"&gt;

    您需要将文件的 URL 放入 action 属性中(如果您愿意,可以使用表单所在的同一页面)。提交表单后,数据会通过 HTTP POST 发送到该页面(在这种情况下,如果您指定了method="get",则可能是 GET)。

    在您将数据发送到的页面上,您可以使用$_POST["fieldName"] 从表单中检索数据。

    因此,您可以这样做(假设 gameend 是您表单中另一个字段的名称):

    $gamestart = mysql_real_escape_string($_POST["gamestart"]);
    $gameend = mysql_real_escape_string($_POST["gameend"]);
    $mysql_query = "INSERT INTO soccer_games(gamestart, gameend) VALUES('$gamestart', '$gameend')";
    

    【讨论】:

      【解决方案3】:

      您的表单标签没有按您希望的方式工作。

      <form method="post" action="<?php insertstatements(); ?>">
      

      这将做的是运行insertstatements,然后什么也不回显,从而制作一个表单标签,如:

      <form method="post" action="">
      

      空白操作将使脚本POST 变为自身。如果这是您想要的,请留下它,或者您可以将其发布到某个页面,方法是为该页面设置操作。

      <form method="post" action="submit.php">
      

      要从表单中读取变量,请使用$_POST,例如:$_POST['gamestart']

      【讨论】:

        猜你喜欢
        • 2019-09-13
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 2021-10-05
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 2017-11-30
        相关资源
        最近更新 更多