0
$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();
4

1 に答える 1

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

TRUE を返します。True は INT にキャストされるため、1 になります。

置き換え:

if( in_array($_POST['year'], $years) === true ){
  $getyear = (int) $_POST['year'];
}
于 2012-11-26T19:41:20.197 に答える