将 HTML 选择传递给 PHP 变量

Posted

技术标签:

【中文标题】将 HTML 选择传递给 PHP 变量【英文标题】:Pass HTML Select into PHP Variable 【发布时间】: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 【参考方案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']

【讨论】:

以上是关于将 HTML 选择传递给 PHP 变量的主要内容,如果未能解决你的问题,请参考以下文章

将javascript变量传递给php [重复]

将PHP变量传递给jQuery函数

将外部选择行变量传递给oracle中的内部选择

Javascript将选项传递给变量并使用php保存到txt文件

如何从 Blade 格式 HTML 将 PHP 变量传递给 JavaScript 函数

将变量传递给 :contains() 选择器、pyquery/cssselect、错误