将HTML Select传递给PHP变量

Pas*_*ner 2 html php mysql forms

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

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

这是我的插入语句到我的数据库与其他类似的变量,我有同样的问题.

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

    $this->db->query($mysql_query);
   ?>
Run Code Online (Sandbox Code Playgroud)

截至目前,值已被放入数据库,但INSERT进入数据库的值是数字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>
Run Code Online (Sandbox Code Playgroud)

kap*_*apa 7

您可以使用gamestart表单中的任何一个$_POST['gamestart']$_GET['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')";
Run Code Online (Sandbox Code Playgroud)

编辑:你可以简单地访问您的GET和POST变量,$gamestart如果已经register_globals启用.但你应该关闭它,而不是写任何依赖它的代码.为什么,在Google上搜索它.