2013-10-14 2 views
-1

Я пытаюсь создать запрос записи INSERT, где пользователь может добавлять новые записи в базу данных, используя два раскрывающихся меню. Способ, которым это работает, заключается в том, что в зависимости от того, кто вошел в систему, переменные $ _SESSION берут верх и показывают правильную информацию в раскрывающихся меню.(SOLVED) Запрос INSERT возвращает TRUE, но не работает?

Я хочу, чтобы это произошло, когда пользователь штата из школы вошел в систему, выбрал предметную область и выбрал группу Year, которой они хотят управлять, в ней отображаются два динамических выпадающих меню со всеми возможными преподавателями которые могут преподавать этот конкретный объект в первом меню и список всех тематических классов в этом году во втором меню. Затем пользователь может выбрать преподавателя и класс и нажать кнопку отправки, чтобы отправить запрос в базу данных для входа.

При запросе 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 one и просто вызовите вместо них свои переменные. –

ответ

1

$ query_addteacher = «SELECT @staff: = idStaff со стороны персонала, где сотрудники = '$ учителя, @class: = idClass FROM класса WHERE класса = '$ класс'; INSERT INTO Staffclass (idStaff, idClass) VALUES ($ teacher, $ class) ";

В этом фрагменте есть два запроса. попробуйте запросить их seprately

+0

Сделал это, а затем вызвал эти результаты запроса в INSERT INTO, спасибо! –

1
$result = $query_addteacher; 

Вы не выполнили запрос, $ результат будет вычисляться верно, как это строка, которая имеет значение верно.

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

Кроме того, прекратите выполнение функций mysql_() и используйте mysqli или PDO.

0

Вы не можете просто задать результат для переменной запроса. Запрос должен быть выполнен на сервере.

Рассмотрите возможность сделать что-то вроде этого: $ result = mysql_query ($ query_addteacher);

Смежные вопросы