错误的值正在插入数据库中

时间:2012-11-26 19:39:25

标签: php mysql mysqli

$min_year = 1;
$max_year = 10;
$years = range($min_year, $max_year); // returns array with numeric values of 1900 - 2012
$yearHTML = '';
$yearHTML .= '<select name="year" id="yearDrop">'.PHP_EOL; 
$yearHTML .= '<option value="">Please Select</option>'.PHP_EOL;  
foreach ($years as $year) {
    if (!$validSubmission && isset($_POST['year']) && $year == $_POST['year'])
    {
        $yearHTML .= "<option value='".$year."' selected='selected'>$year</option>".PHP_EOL;
    }
    else
    {
        $yearHTML .= "<option value='".$year."'>$year</option>".PHP_EOL;
    }
}

$yearHTML .= '</select>'; 

上面我有一个下拉菜单,其中包含下拉菜单中的选项1 - 10。我遇到的问题是,无论我从下拉菜单中选择哪个号码,它都会在数据库中插入数字1。任何人都可以在下面的代码中看到为什么会这样做:

$getyear = in_array($_POST['year'], $years);

    $insertsql = "
    INSERT INTO Student
    (Year)
    VALUES
    (?)
    ";
    if (!$insert = $mysqli->prepare($insertsql)) {
    // Handle errors with prepare operation here
    }                                           

    $insert->bind_param("i", $getyear);

    $insert->execute();

    if ($insert->errno) {
    // Handle query error here
    }

    $insert->close();

1 个答案:

答案 0 :(得分:5)

$getyear = in_array($_POST['year'], $years);

返回TRUE。 True转换为INT,因此变为1;

替换为:

if( in_array($_POST['year'], $years) === true ){
  $getyear = (int) $_POST['year'];
}