2013-10-14 70 views
-1

我想建立一個INSERT記錄查詢,用戶可以使用兩個下拉菜單向數據庫添加新條目。這樣做的方式是,取決於誰登錄,$ _SESSION變量接管並在下拉菜單中顯示正確的信息。(已解決)INSERT查詢返回TRUE但不起作用?

我想要做的是,一旦學校的工作人員登錄後,選擇了學科領域並選擇了他們想要管理的年份組,它會顯示兩個動態下拉菜單,包含所有可能的教師可以在第一個菜單中教授特定主題,以及在第二個菜單中顯示當年所有主題課程的列表。然後,用戶可以選擇一個教師和一個班級,然後按提交按鈕將查詢發送到數據庫進行錄入。

當通過IF-命令提示測試,如果查詢工作,它識別查詢,就好像它是真實的,回聲的成功線和重定向到前一頁:

$result = $query_addteacher; 
if (!$result) { 
    die('Invalid query:'. mysql_error()); 
    } 
    else 
    { echo "Success!"; 
     header("location:addteachertest.php"); } 


但數據實際上還沒有被輸入到數據庫中。下面是兩個下拉菜單中的和查詢代碼:

// Connect Command // 
mysql_connect($host, $username, $password) OR die("Can't connect"); 
mysql_select_db($database_name) OR die("Can't connect to Database"); 

$teacher = $_POST['teacher']; 
$class = $_POST['class']; 

// Query to insert data into the staffclass table // 
$query_addteacher = "SELECT @staff := idStaff FROM Staff WHERE Staff = '$teacher', @class := idClass 
FROM Class WHERE Class = '$class'; 
INSERT INTO Staffclass (idStaff, idClass) 
VALUES ($teacher, $class)"; 


Teacher: 
<select name="teacher" id="teacher" form="addteacher" title="Teacher"> 
<?php do { ?> 
    <option value="<?php echo $row_teacherlist['Staff']?>"><?php echo $row_teacherlist['Staff']?> 
    </option> 
<?php 
    } while ($row_teacherlist = mysql_fetch_array($teacherlist)); 
    $rows = mysql_num_rows($teacherlist); 
    if($rows > 0) 
    { 
    mysql_data_seek($teacherlist, 0); 
    $row_teacherlist = mysql_fetch_array($teacherlist); 
    } 
?> 
    </select> 

    Class: 
    <select name="class" id="class" form="addteacher" title="Class"> 
    <?php do { ?> 
    <option value="<?php echo $row_classlist['Class']?>"><?php echo $row_classlist['Class']?></option> 
    <?php 
    } while ($row_classlist = mysql_fetch_array($classlist)); 
     $rows = mysql_num_rows($classlist); 
     if($rows > 0) { 
     mysql_data_seek($classlist, 0); 
     $row_classlist = mysql_fetch_array($classlist); 
    } 
    ?> 
    </select> 

我有一種感覺:有什麼問題我想查詢的操作方式,通過使用簡單的MySQL命令。它在這種格式下工作(雖然老師和班級的變量是不可變的),當我手動輸入到MySQL時,我不知道我通過PHP做錯了什麼。提前謝謝了!

+1

...你什麼時候執行查詢? –

+0

此外 - 您的查詢字符串包含兩個單獨的查詢;如果您使用的是mysql_query,那麼這將不起作用 - 這將允許您一次運行一個查詢。如果你想在一個調用中運行多個查詢,那麼你將不得不使用mysqli_multi_query – andrewsi

+0

我已經設法通過在查詢開始時將兩個變量創建轉換爲INSERT INTO之前的兩個單獨查詢只需調用它們的變量。 –

回答

1

$ query_addteacher =「SELECT @staff:= idStaff來自工作人員那裏的工作人員='$教師,@class:= idClass 從類WHERE類= '$類'; INSERT INTO Staffclass(idStaff,idClass) VALUES($ teacher,$ class)「;

在這個片段中有兩個查詢。 嘗試對它們進行查詢seprately

+0

這樣做,然後調用這些查詢結果中的INSERT INTO之一,謝謝! –

1
$result = $query_addteacher; 

您還沒有運行查詢,$結果將評估爲真,因爲它是計算結果爲true的字符串。

$result = mysql_query($query_addteacher); // maybe? 

此外,停止與mysql_()funcs並使用mysqli或PDO。

0

您不能只將結果設置爲查詢變量。查詢必須在服務器上執行

考慮做這樣的事情: $ result = mysql_query($ query_addteacher);

相關問題