1

以下に、モジュールのドロップダウンメニューがあります。ここでは、データベースからモジュールのリストを取得し、ドロップダウンメニューにモジュールを表示します。

$active = 1;

 $sql = "SELECT ModuleId, ModuleNo, ModuleName FROM Module WHERE ModuleActive = ? ORDER BY ModuleNo"; 

 $sqlstmt=$mysqli->prepare($sql);

 $sqlstmt->bind_param("i",$active);

 $sqlstmt->execute(); 

 $sqlstmt->bind_result($dbModuleId, $dbModuleNo, $dbModuleName);

 $modules = array(); // easier if you don't use generic names for data 

 $output = ""; 
 $moduleHTML = "";  
 $moduleHTML .= '<select name="module" id="modulesDrop">'.PHP_EOL;
 $moduleHTML .= '<option value="">Please Select</option>'.PHP_EOL;  

 while($sqlstmt->fetch()) 
 { 
     $moduleno = $dbModuleNo;
     $module = $dbModuleId;
     $modulename = $dbModuleName; 
     $moduleHTML .= "<option value='".$module."'>" . $moduleno . " - " . $modulename . "</option>".PHP_EOL;  

         if (isset($_POST['module']) && ($_POST['module'] == $module)) {
    $output .= "<p><strong>Selected Module:</strong> " . $moduleno .  " - "  . $modulename . "</p>";
}
  } 

  $moduleHTML .= '</select>'; 

しかし、私が以下で得ている問題は、選択したモジュールをデータベースに挿入しようとすると、それを実行できないため、ModuleIdがnullになることです。選択したモジュールをデータベースに挿入できないのはなぜですか?

if (isset($_POST['module'])) {

$_SESSION['module'] = $_POST['module'];

}

if($_SERVER['REQUEST_METHOD'] == 'POST')

{



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


        $insert->bind_param("i", $_SESSION['module']);

        $insert->execute();

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

        $insert->close();



}

ModuleIdはINTフィールドです

4

1 に答える 1

0

これを試して

    if ($insert = $mysqli->prepare($insertsql)) {


    $insert->bind_param("i", real_escape_string($_SESSION['module']));

    $insert->execute();
    $insert->close();
    }
    else  {
      // Handle query error here
    }
于 2012-12-13T13:28:13.843 に答える