2012-12-13 81 views
1

下面我有一個模塊下拉菜單,它得到的模塊列表從數據庫的明顯它們顯示在下拉菜單:PHP腳本不插入值插入數據庫

$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場

+0

無法或沒有發生?有沒有彈出錯誤或什麼都沒有發生。使用調試來測試預期的事情。 –

+0

首先,你爲什麼要使用準備好的語句? – zeyorama

+0

您可以在不使用預處理語句的情況下進行參數綁定嗎? –

回答

0

試試這個

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


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

    $insert->execute(); 
    $insert->close(); 
    } 
    else { 
     // Handle query error here 
    }