将 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
标签应如下所示:<form action="thepage.php" method="post">
您需要将文件的 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保存到txt文件