2012-12-01 23 views
0

以下的變量中檢索正確的值我hava查詢它在哪裏執行查詢以從數據庫中查找所有課程詳細信息並將其顯示在下拉菜單中,然後顯示所選課程在使用$outputcourse變量的消息顯示:它無法從WHERE子句中的變量

$sql = "SELECT CourseId, CourseNo, CourseName FROM Course ORDER BY CourseNo"; 

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

    $sqlstmt->execute(); 

    $sqlstmt->bind_result($dbCourseId, $dbCourseNo, $dbCourseName); 

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

    $courseHTML = ""; 
    $courseHTML .= '<select name="courses" id="coursesDrop">'.PHP_EOL; 
    $courseHTML .= '<option value="">Please Select</option>'.PHP_EOL; 

    $outputcourse = ""; 
    $hiddencourse = ""; 

    while($sqlstmt->fetch()) 
    { 
    $course = $dbCourseId; 
    $courseno = $dbCourseNo; 
    $coursename = $dbCourseName; 
    $courseHTML .= "<option value='".$course."'>" . $courseno . " - " . $coursename . "</option>".PHP_EOL; 

    if (isset($_POST['courses']) && ($_POST['courses'] == $course)) { 
    $outputcourse .= "<p><strong>Course:</strong> " . $courseno . " - " . $coursename . "</p>"; 
    $hiddencourse .= "<p><input type='hidden' id='hiddencourse' value='". $courseno . " - " . $coursename ."'></p>"; 
} 

    } 

    $courseHTML .= '</select>'; 

現在我想做的是顯示不所選課程所屬的模塊。現在我的查詢在php中工作正常,但是我遇到的問題是如果我使用mysqli來運行此查詢,它無法退回where子句中的$dbCourseId變量,因此WHERE子句不正確。

WHERE子句假設顯示假設爲1的courseId,但它始終顯示10。如果我選擇其中courseId應該是3的其他課程,它仍輸出10

那麼我的問題是,哪個變量應該在下面的代碼中的bind-> param()中去,以及如何退出所選課程的正確courseID?

下面是查詢代碼:

$modulequery = " 
SELECT 
m.ModuleId, m.ModuleNo, m.ModuleName, m.Credits 
FROM 
Module m 
WHERE 
m.ModuleId NOT IN (
SELECT cm.ModuleId 
FROM Course_Module cm 
WHERE cm.CourseId = ? 
) 
ORDER BY m.ModuleNo 
"; 

$moduleqrystmt=$mysqli->prepare($modulequery); 
// You only need to call bind_param once 
$moduleqrystmt->bind_param("i",$dbCourseId); 
// get result and assign variables (prefix with db) 

$moduleqrystmt->execute(); 

$moduleqrystmt->bind_result($dbModuleId,$dbModuleNo,$dbModuleName,$dbCredits); 

$moduleqrystmt->store_result(); 

$modulenum = $moduleqrystmt->num_rows();  

echo $dbCourseId; 
+0

這哪裏是'$ dbCourseId'變量被初始化並分配一個值。我只看到它只分配給其他值。 –

+0

@YogeshSuthar我想要做的是使用Query中的$ dbCourseId選擇課程,然後使用它作爲模塊查詢中使用的參數。我是否使用了錯誤的變量呢? – user1861818

+0

'onchange =「getModules();」'在調用此調用時傳遞選定的選項ID。 –

回答

1

下方,如果在您檢查,如果用戶點擊了courseSubmit按鈕聲明包括線如下:

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

     //get the form data 
    $coursesdrop = (isset($_POST['courses'])) ? $_POST['courses'] : ''; 

現在,作爲您的每個課程選項都包含值$dbCourseId,您可以使用$coursesdrop變量以便在其他查詢中退出課程ID。

所以在其他查​​詢變化:

$moduleqrystmt->bind_param("i",$dbCourseId);

要:

$moduleqrystmt->bind_param("i",$coursesdrop);

能解決問題