2013-10-14 2 views
-1

사용자가 두 개의 드롭 다운 메뉴를 사용하여 데이터베이스에 새 항목을 추가 할 수있는 INSERT 레코드 쿼리를 작성하려고합니다. 이것이 작동하는 방식은 로그인 한 사용자에 따라 $ _SESSION 변수가 인계되어 드롭 다운 메뉴에 올바른 정보를 표시하는 것입니다.(SOLVED) INSERT 쿼리는 TRUE를 반환하지만 작동하지 않습니까?

내가 원했던 것은 일단 학교 직원이 로그온하고 주제 영역을 선택하고 관리하려는 연도 그룹을 선택한 경우 모든 가능한 교사와 함께 두 개의 동적 드롭 다운 메뉴가 표시됩니다. 첫 번째 메뉴에서 특정 주제를 가르 칠 수 있고 두 번째 메뉴에서 그 해의 모든 주제 수업 목록을 가르 칠 수 있습니다. 그런 다음 사용자는 교사와 수업을 선택하고 제출 버튼을 눌러 검색어를 데이터베이스에 보내 항목을 입력 할 수 있습니다.

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


그러나 데이터 : 성공 라인을 메아리와 이전 페이지로 리디렉션이 TRUE 인 것처럼

쿼리 일 경우 테스트하기 위해 IF-명령 프롬프트가

, 그것은 쿼리를 인식 실제로 데이터베이스에 공급되지 않았습니다.

// 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 = "@staff SELECT = idStaff 직원 직원 = '$ 교사'@class = idClass 클래스에서 클래스 = '$ 클래스'; 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);

관련 문제