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 为空。为什么它不能将选定的模块插入数据库?

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 回答